我预计以下程序的输出为 5,但编译器显示为 20。谁能解释一下为什么?
#include <stdio.h>
int a=5;
change1(int *p);
int main(void)
{
int x=20,*ptr=&x;
change1(ptr);
printf("%d ",*ptr);
return 0;
}
change1(int *p)
{
p=&a;
}
最佳答案
您正在传递一个指针,这会导致函数进行复制。为了更改它,您必须将指针传递给指针。
关于c - 指针显示与预期不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825109/