关于函数内部定义指针并进行操作的一个疑问

来源:7-6 强者争霸

烽烟

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,但是上面的写法为什么不对呢?望大神赐教,谢谢!


写回答 关注

3回答

  • String桃花仙人
    2023-08-23 17:15:39

    int *c; //指针变量


    指针变量只指向内存的标签,本质 *c 就是 a,无论名字还是内存(值)都是一样的

  • 子女良
    2023-03-26 20:21:41
    int *c=a;把a的地址赋值给c
    *a=*b;把6赋值给a,也就是说,c现在指向的仍是a,但a已经变成了6,所以下一步把c赋值给b时,c指向的是6
  • 烽烟
    2022-06-29 17:21:19

    正确写法中“a*”更正为“*a”,不影响提问,谢谢

趣味 C++ 入门

C++ 入门,开启趣味学习之旅,揭开 C++ 的神秘面纱,让你不再望而生畏。

30497 学习 · 184 问题

查看课程

相似问题