c - 指针的指针在这段 C 代码中如何工作?

标签 c pointers

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/

相关文章:

c - 使用三元运算符进行数组初始化?

c - 输出额外字符的简单字符加密

c++ - 计算机总是按照2的补码法来表示负数吗?

使用指针创建动态数组

c - 有没有办法让变量在当前范围之外的 1 个范围内存活?

c - c中的指针表达式有什么问题?

c - 对齐陷阱: not handling instruction e1913f9f at [<80467364>]

c - 数据在一个内存块中的 ANSI C 哈希表实现

pointers - 是什么使得 Rust 中返回的引用字符串成为悬空指针?

c - 全局修改数组/结构不起作用