簡體   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