烽烟
2022-06-29 17:16
int change(int*a,int*b) { int *c=a; *a=*b; *b=*c; return 0; } int main(int argc,char**argv) {//1 int a =5; int b =6; change(&a,&b); printf("a'=%d\nb'=%d\n",a,b); return 0; }
在函数内部定义一个指针c,把指针a指向的值赋给c,再把它传递给b,为什么调用函数后结果b'还是6?
int change(int*a,int*b) { int c=a*; *a=*b; *b=c; return 0; }
对比正确写法,我可以理解这是把c=5直接赋值给b,但是上面的写法为什么不对呢?望大神赐教,谢谢!
int *c; //指针变量
指针变量只指向内存的标签,本质 *c 就是 a,无论名字还是内存(值)都是一样的
int *c=a;把a的地址赋值给c *a=*b;把6赋值给a,也就是说,c现在指向的仍是a,但a已经变成了6,所以下一步把c赋值给b时,c指向的是6
正确写法中“a*”更正为“*a”,不影响提问,谢谢
趣味 C++ 入门
30497 学习 · 184 问题
相似问题