形参的改变无法影响到实参,是我开始以为的。后来发现用指针变量可以改变实参。#include #include voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}voidfun1(int*a,int*b){int*c;*c=*a;*a=*b;*b=*c;}intmain(){intx=3,y=5,*p=&x,*q=&y,*k=&x,*z=&y;fun(p,q);printf("%d,%d\n",*p,*q);fun1(k,z);printf("%d,%d\n",*k,*z);//fun(&x,&y);printf("%d,%d\n",*p,*q);return0;}这段代码输出3,53,3;首先我认为,在main()中,p,q获得了整形x,y的地址。进入fun()函数后,a,b,c交换的a,b的地址应该p,q的地址也要变化,因此我错误的认为输出5,3至于进入fun1()函数后,是指针变量的值互换应该不会改变我错误的认为应该输出3,5.请您帮我指导下,详细点。否则我可能不懂。谢谢您
慕桂英3389331
相关分类