[英]Accessing address of the pointer in a C struct
我有一个结构:
struct test {
int **x;
}
如何访问指针x的地址?
解决了
int main () {
struct test * mytest = malloc(sizeof(struct test));
...
printf("Address of the pointer x: %zu", &my_test->x);
}
您可能有点困惑。 一个int *
已经是一个地址,因此在这种情况下,您可以只使用my_test->x
(请注意,由于struct test *my_test
不指向任何内容,因此您的应用程序将立即struct test *my_test
)。
如果您想要指针的地址 (可以是int **
),则只需执行&my_test->x
。
您将int *
分配给5
似乎也很奇怪; 那是一个奇怪的内存地址。 也许您想将x
位置的int
设置为5
? 在这种情况下,您将编写*my_text->x = 5
。
注意,不指向任何明智的指针的引用很危险。 您尚未在代码中分配任何指针,因此它们可能只是(可能会)指向废话。
以下代码是没有意义的:
x_tmp = mytest->x;
printf("Address pointed by x: %zu", &x_tmp);
它只是打印x_tmp
变量的地址,无论mytest
和mytest-> x`中包含什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.