【发布时间】:2018-01-08 18:54:37
【问题描述】:
void fun(int *p)
{
int q = 10;
p = &q;
}
int main()
{
int r = 20;
int *p = &r;
fun(p);
printf("%d", *p);
return 0;
}
我对指针有所了解,但我猜printf 应该显示 10,尽管网站的编译器和其他编译器说该值仍然是 20。
谁能解释一下原因?
fun() 对指针p 有影响吗?为什么或为什么不?
【问题讨论】:
-
p是本地。 -
fun(int *p)确实用p = &q;改变指针值。然而,fun()中的p不是main()中的p。 -
这个问题的 8 个答案?真的吗?
-
感谢尤金,这让事情变得一清二楚。变量共享名称,而不是范围。