# include <stdio.h>
int main(){
int *** pointer3;
int ** pointer2;
int * pointer1;
int a = 10;
pointer1 = &a;
pointer2 = &a;
pointer3 = &a;
*pointer1 = 100;
printf("%d\n",a);
*pointer2 = 200;
printf("%d\n",a);
*pointer3 = 300;
printf("%d\n",a);
pointer3 = &pointer2;
pointer2 = &pointer1;
***pointer3 = 400;
printf("%d\n",a);
}
这些代码使我感到困惑。我们知道pointer2是一个关于指针的指针,但是它的值是变量“ a”的地址。为什么* pointer2可以修改a。的值。关于指针3的相同问题?请帮助我,非常感谢。
最佳答案
这段代码不是有效的C语言,因此讨论它的任何形式的结果只是猜测。如果您的编译器使用此代码构建了二进制文件,则说明您的编译器已损坏,必须将其替换。
具体来说,这是无效的C:
pointer2 = &a;
pointer3 = &a;
int**
不能分配给int*
,int***
也不能分配。(严格违反简单分配规则)
关于c - 为什么** pointer2可以更改变量a?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55235724/