2014-02-20 29 views
0

我有一個結構:訪問指針的地址在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); 
} 
+3

'x'是一個指針字段,所以已經是一個地址。 '&x_tmp'是本地'x_tmp'指針的地址。 –

+0

printf(「由x指向的地址:%p」,x_tmp); – qwr

+3

'mytest-> x = 5;'對於一個指針來說不是很好的值:/另外你在爲mytest本身分配內存之前試圖訪問'x'字段 – mangusta

回答

2

你可能會有點困惑。一個int *已經是一個地址,所以在這種情況下,你可以只使用my_test->x(注意你的應用程序會馬上分段,因爲struct test *my_test沒有指向任何東西)。

如果你想要指針(這將是int **)的地址,你只需要做&my_test->x

此外,您將int *指定爲5似乎很奇怪;這是一個奇怪的內存地址。也許你想在x的位置設置int5?在這種情況下,你會寫*my_text->x = 5

請注意,這是危險的取消引用指針,不指向任何明智的指針。你沒有在你的代碼中分配任何指針,所以他們可能會(他們可能會)指向廢話。

+0

我做了一些混淆。我想要的就是指針指針的指針地址。 – MrMoog

1

下面的代碼是毫無意義的:

x_tmp = mytest->x; 
printf("Address pointed by x: %zu", &x_tmp); 

它只是打印無論是包含在mytest和mytest-> x`的x_tmp變量的地址。

+0

我做了一些混淆。我想要的就是指針指針的指針地址。 – MrMoog