我有一個結構:訪問指針的地址在C結構
struct test {
int **x;
}
如何訪問指針x的地址?
解決
int main() {
struct test * mytest = malloc(sizeof(struct test));
...
printf("Address of the pointer x: %zu", &my_test->x);
}
我有一個結構:訪問指針的地址在C結構
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
沒有指向任何東西)。
如果你想要指針(這將是int **
)的地址,你只需要做&my_test->x
。
此外,您將int *
指定爲5
似乎很奇怪;這是一個奇怪的內存地址。也許你想在x
的位置設置int
到5
?在這種情況下,你會寫*my_text->x = 5
。
請注意,這是危險的取消引用指針,不指向任何明智的指針。你沒有在你的代碼中分配任何指針,所以他們可能會(他們可能會)指向廢話。
我做了一些混淆。我想要的就是指針指針的指針地址。 – MrMoog
下面的代碼是毫無意義的:
x_tmp = mytest->x;
printf("Address pointed by x: %zu", &x_tmp);
它只是打印無論是包含在mytest
和mytest-> x`的x_tmp
變量的地址。
我做了一些混淆。我想要的就是指針指針的指針地址。 – MrMoog
'x'是一個指針字段,所以已經是一個地址。 '&x_tmp'是本地'x_tmp'指針的地址。 –
printf(「由x指向的地址:%p」,x_tmp); – qwr
'mytest-> x = 5;'對於一個指針來說不是很好的值:/另外你在爲mytest本身分配內存之前試圖訪問'x'字段 – mangusta