访问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
字段,我自己也有点困惑。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,一个指针的指针。我弄糊涂了。我想要的正是指针的地址,指针的指针。