int r = 50;
int *p;
int **k;
int ***m;
printf( "r: %d ", r );
p = &r;
k = &p;
m = &k;
***m = 100; //line 9
printf( "r: %d\n", r );
当只有一个指针时,我可以理解,我们取 100 并将其分配给指针所保存的地址处的变量。但是,当我们使用多个指针级别执行此操作时,到底一步一步发生了什么? (第 9 行)
最佳答案
int *p=&r
:p
是一个指向 int
的指针,它采用 r的地址
.
int **k=&p
:k
是一个 pointer-to-(pointer-to-int )
,它采用p的地址
。
int ***m=&k
:m
是一个指向-(pointer-to-(pointer-to-int))的指针
code>,它采用 k 的地址。
当你执行***m = 100
时,你正在“展开”指针,最后你得到的只是int
。
关于c - 指针的指针在这段 C 代码中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973479/