我有一个结构:
struct test {
int **x;
}
如何访问指针x的地址?
解决
int main () {
struct test * mytest = malloc(sizeof(struct test));
...
printf("Address of the pointer x: %zu", &my_test->x);
}
答案 0 :(得分:2)
int *
已经是一个地址,因此在这种情况下您可以使用my_test->x
(请注意,您的应用程序会立即发生段错误,因为struct test *my_test
并未指向任何内容。)
如果您想要指针的地址(可能是int **
),您只需执行&my_test->x
。
您将int *
分配给5
似乎很奇怪;这有点奇怪的内存地址。也许您想要将int
设置为x
到5
?在这种情况下,你要写*my_text->x = 5
。
请注意,引用指向危险的指针是危险的。你没有在你的代码中分配任何指针,所以他们可能只是(他们可能会)指向废话。
答案 1 :(得分:1)
以下代码毫无意义:
x_tmp = mytest->x;
printf("Address pointed by x: %zu", &x_tmp);
它只打印x_tmp
变量的地址mytest
和mytest-> x`中包含的内容。