</pre> </p><p>下边是一个例子</p><p><pre name="code" class="objc">#include<stdio.h>
void change(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
}
int main()
{
int a=5;
int b=3;
change(a,b);
printf("a=%d\nb=%d\n",a,b);
}
下图是调试过程
首先找到函数入口 main()
执行 int a=5;int b=3;
进入change函数
change(x=5,y=3)
{
tmp=x; // p tmp打印tmp验证一下tmp=5;
x=y; // p x 打印x验证一下x=3;
y=tmp; //p y 打印一下y=5
}
跳出函数后在main函数不存在x, y变量了。
打印a的值还是5 打印b的值还是3
如果使用指针
#include<stdio.h>
void change(int *x,int *y)
{
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
int main()
{
int a=5;
int b=3;
change(&a,&b);
printf("a=%d\nb=%d\n",a,b);
return 0;
}
如上图 x,y为一个地址,change(&a,&b)
先把a,b的地址赋值给x,y.
然后把x地址的内容赋值给tmp变量
再把y地址的内容赋值给x地址内
从而实现了指针所指内容的变化