c语言指针的之交换两个数的值

来源:互联网 发布:流浪仙人知乎 编辑:程序博客网 时间:2024/04/30 09:32

</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地址内

从而实现了指针所指内容的变化








0 0
原创粉丝点击