调用函数与指针
交换2个数的值
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
为什么这样不行,如下:
swap(int x,int y)
{int temp;
temp=x;
x=y;
y=temp;
}
书上虽然说得很明白了,就是由于“单向传递”的“值传递”方式,形参值的改变无法传给实参.但是为什么自己定义别的函数不用指针一样可以,比如自己定义的求2个数大小的max函数,不用到指针一样可以实现值的改变,这是怎么回事啊?
[解决办法]
swap(int x,int y)
{int temp;
temp=x;
x=y;
y=temp;
}
這個只是交換了你傳給swap的2个參數的副本的值。
比如
int a = 5, b = 6;
swap(a, b);的話,其實swap函數是收到了a和b的副本a ',b '。
所以你改變的只是a ',b '的值。
[解决办法]
值传递和指针传递是不一样的!
值传递只是拷贝了副本给形参