繁体   English   中英

在C结构中访问指针的地址

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM