访问C结构中指针的地址
我有一个结构:访问C结构中指针的地址,c,pointers,struct,C,Pointers,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\u test->x(请注意,您
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\u test->x
(请注意,您的应用程序将立即发生故障,因为struct test*my\u test
没有指向任何东西)
如果您想要指针的地址(即int**
),只需执行&my\u test->x
另外,您将int*
分配给5
,这似乎很奇怪;这是一个有点奇怪的内存地址。也许您想将x
位置的int
设置为5
?在这种情况下,您可以编写*my_text->x=5
请注意,如果指针不指向任何有意义的东西,则取消引用是危险的。您尚未在代码中分配任何指针,因此它们可能(可能会)指向垃圾。您可能会有点困惑。一个
int*
已经是一个地址,因此在这种情况下,您可以使用my\u test->x
(请注意,您的应用程序将立即发生故障,因为struct test*my\u test
没有指向任何东西)
如果您想要指针的地址(即int**
),只需执行&my\u test->x
另外,您将int*
分配给5
,这似乎很奇怪;这是一个有点奇怪的内存地址。也许您想将x
位置的int
设置为5
?在这种情况下,您可以编写*my_text->x=5
请注意,如果指针不指向任何有意义的东西,则取消引用是危险的。您尚未在代码中分配任何指针,因此它们可能(可能会)指向垃圾。以下代码毫无意义:
x_tmp = mytest->x;
printf("Address pointed by x: %zu", &x_tmp);
它只打印
x\u tmp
变量的地址,无论mytest
和mytest->x`中包含什么。以下代码没有意义:
x_tmp = mytest->x;
printf("Address pointed by x: %zu", &x_tmp);
它只打印
x\u tmp
变量的地址,无论该变量包含在mytest
和mytest->x`中的是什么。x
是一个指针字段,因此已经是一个地址&x_tmp
是本地x_tmp
指针的地址<代码>mytest->x=5代码>指针的值不是很好:/而且在实际为mytest
分配内存之前,您试图访问x
字段,我自己也有点困惑。我想要的正是指针的指针的地址。x
是指针字段,所以已经是地址了&x_tmp
是本地x_tmp
指针的地址<代码>mytest->x=5代码>指针的值不是很好:/而且在实际为mytest
分配内存之前,您试图访问x
字段,我自己也有点困惑。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,指针的指针。