在这个C代码中,我尝试将一个变量的指针地址分配给其他变量,然后再进行一些更改。
#include<stdio.h>
void change(int *x)
{
int *z;
z=x+5;
printf("%u\n",z);
x=z;
printf("%u\n",x);
}
int main()
{
int *p;
int y=2;
p=&y;
printf("%u\n",p);
change(p);
printf("%u\n",p);
return 0;
}
输出是:
2280640
2280660
2280660
2280640
有人可以解释为什么输出2280640的最后一行。我认为应该是2280660。
答案 0 :(得分:7)
您正在通过值传递指针。指针p
的副本将传递给函数change()
,而不是指针p
本身。
为了能够在功能中修改p
,您必须通过引用传递。
void change(int **x)
并将其命名为
change(&p);
并在change
内进行分配
*x = z;