首页 > 解决方案 > 如何评估c中的双指针?

问题描述

我正在学习c,我对这个双指针问题感到很困惑。

int x = 44;
int *p = &x;
int **t = &p;

bool a = (*t = &x);

我需要判断是否atrue or false,正确答案是true。我的想法是t指向 的地址p,并p指向 的地址x。我知道如果你放**t,它应该指向的地址x,但我想如果你只是放*t它应该指向的地址p。谁能解释一下?

标签: cpointersbooleanpointer-to-pointer

解决方案


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,它将布尔值 a 设置为 true。


推荐阅读