形参与实参
#include"stdio.h"void fun(int*a,int*b)
{
int *k;
k=a;a=b;b=k;
}
main()
{
int a=1,b=2,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
printf("%d%d",*x,*y);
}
为什么调用fun后*x和*y的值没有改变呢,不理解了,高人指点
// 这样写就好 void fun(int*a,int*b) { int k; k = *a; *a = *b; *b = k; } // 楼主那样写只是改变了通过形参获得的指针所指向的地址,而这个指针所指向的地址的改变只在函数空间中有效,对实参不会有影响。 // 像上面那样写是直接改变指针指向的内存位置的数据
void fun(int & a,int & b) { int k; k = a; a = b; b = k; }用C++编译器试试这个。