C++语言程序设计

同其它变量一样，指针也可以作函数的参数。我们以下面的swap函数为例，该函数的功能是交换两个整型变量的值：
void swap(int* pa, int* pb)
{
int temp = *pa;
*pa = *pb;
*pb = temp;
}
注意：被交换的值是pa、pb指向的内容，不是pa、pb本身。
调用swap函数，会影响到实参的值。例如：
float x=10, y = 20, z = 0;
swap (&x, &y);
cout<< x <<", "<< y << endl;
输出结果为：20, 10。这是因为当swap被调用时，会创建两个临时指针变量pa、pb，并分别被初始化为实参x、y的地址，即相当于：
int *pa = &x, *pb = &y;
函数中参与运算的值不是pa、pb本身，而是它们指向的内容，也就是实参x、y的值（*pa与x、*pa与y占用相同的内存单元）。所以在swap函数中改变了*pa，也就是改变了实参x，改变了*pb，也就是改变了实参y。交换了*pa与*pb，也就是交换了x、y的值。
从上面我们可以看到：在调用函数中，是把实参的指针传送给形参，即传送&x、&y，这是函数参数的引用传递。但是，作为指针本身，仍然是函数参数的值传递的方式。因为在swap函数中创建的临时指针，在函数返回时被释放，它不能影响调用函数中的实参指针（即地址）值。