我是学c的,对这道双指针题比较迷茫。
int x = 44;
int *p = &x;
int **t = &p;
bool a = (*t = &x);
我需要判断a
是true 还是false
,正确答案是true
。我的想法是t
指向p
的地址,p
指向x
的地址。我知道如果你把 **t
,它应该指向 x
的地址,但我想如果你只是把 *t
它应该指向p
的地址。谁能解释一下?
最佳答案
int x = 44;
声明整型变量x,存储值44。
int *p = &x;
声明整数指针变量 p,p 现在存储 x 的地址。
int **t = &p;
声明指向名为t的int类型指针的指针,t存储p的地址。 (指针也有地址)
bool a = (*t = &x);
在 C 中;
'*' = 从地址中提取值(取消引用)
'&' = 给出变量地址(引用)
因为 t
是指向存储在 p
中的值的指针。 *t
将是p
中存储的值,也就是x
的地址。 (我们在第二行解决了这个问题)
另一方面,因为 &
用于变量 x
。这将提取 x
的地址。
因此 *t == &x
,将 boolean 值 a 设置为 true。
关于c - 如何评估c中的双指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53016944/