关于指针的有关问题`希望各位大大给指教一下~

关于指针的问题`!希望各位大大给指教一下~!!!
用指针把两个数互换~!或者冒泡排序`!是用*a还是&a啊?
请具体举例下`!偶比较笨~!!
谢谢啦~!!!

------解决方案--------------------
一般情况下都是*a,对a所指向的数据进行操作,前提是:a是一个指针。

这可能是指针的标准使用方法。

比如说:
#include <iostream>

using namespace std;

//交换*a与*b的值
void Swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}

int main()

{
int a = 10, b = 20;
cout < < "a= " < < a < < " b= " < < b < < endl;
Swap(&a, &b); //传址的方式调用Swap函数
cout < < "Swap(&a, &b) " < < endl;
cout < < "a= " < < a < < " b= " < < b < < endl;

return 0;
}
------解决方案--------------------
用指针把两个数互换~!或者冒泡排序`!是用*a还是&a啊?


两种方法都可以的.只不过前两个是交换值,最后一个是交换指针,可以举个例子


void swap(int *p,int *q) //交换的是*p,也就是实参
{
int temp=*p;
*p=*q;
*q=temp;
}

void swap(int &a,int &b) //交换的是a的引用,同样,也是实参
{
int temp=a;
a=b;
b=temp;
}


void swap(int *&p,int *&q) //交换的是指针的引用,也就是实参的指针
{
int *temp=p;
p=q;
q=temp;
}


以上三种方法都可以实现交换两个数的目的,常用的是前两种了,最后一种不太好理解
另外传值方式是不可以用来交换两个数的,如:

void swap(int a,int b) //这里的a,b都是一个新的值,只不过值和实参一样,对a,b交换
{ //并不影响实参那边,所以实参那里并没有交换
int temp=a;
a=b;
b=temp;
}