用指针来传递数据的一个主要原因是函数可以修改数据。下面的代码段实现了一个交换函数,可以交换其参数所引用的值。这是很多排序算法中的常用操作。我们在这里用整数指针,通过解引它们来实现交换。
void swapWithPointers(int* pnum1, int* pnum2) { int tmp; tmp = *pnum1; *pnum1 = *pnum2; *pnum2 = tmp;}下面的代码段说明了这个函数的用法:
int main() { int n1 = 5; int n2 = 10; swapWithPointers(&n1, &n2); return 0;}指针pnum1和pnum2在交换操作中被解引,结果是修改了n1和n2的值。图3-3说明了内存如何组织,左图表示swap函数开始时程序栈的状态,而右图则是函数返回前的状态。

