簡體   English   中英

為什么 C 輸出中的自引用結構為零

[英]Why self-referential struct in C output is nill

我想在 C 中創建一個結構,並且我希望它只有一個組件作為它的地址。

換句話說,我只是創建了一個單組件自引用結構:

#include <stdio.h>
#include <string.h>
 
struct Books {
   struct Books *ptr; //* the only one component of this structure*//
};

int main( ) {
    struct Books book1;
    printf("%p\n", book1.ptr);
    
    return 0;
}

這個腳本的輸出是 - nil。

我的問題是 - 為什么? 此腳本已在計算機內存物理條目中創建,其中記錄了一個組件 structbook1。

現在我想查看這個結構的地址(或者換個說法我想查看這個單組件結構的內容)。

一旦它物理存在,為什么它會給我輸出 nill ?

如果您希望結構成員(或任何對象)具有特定值,則必須對其進行初始化或分配以具有該值。 僅僅因為成員的類型是“指向struct Books指針”並不意味着它指向它所在的struct Books或它具有任何其他特定值。

使用struct Books book1 = { &book1 }; .

此外,應為printf%p轉換提供一個void *參數,因此轉換您正在傳遞的地址: printf("%p\\n", (void *) book1.ptr); .

試試這個: printf("%p\\n", &book1); 用於打印結構的地址。 您正在嘗試打印出未初始化的值並且程序具有未定義的行為。 使用 & 打印地址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM