# 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/

10-10 18:21