簡體   English   中英

如何檢查結構是否在C中初始化?

[英]How do you check if a struct is initialized in C?

我聲明了一個結構,我想檢查它是否已經初始化。 我該怎么做呢?

我試過了:

struct mystruct str1;

if(str1 != NULL)

if(str1->name != NULL)

struct是一個鏈表,還包含int和char等類型的屬性。

如果任何函數( 包括main() 之外聲明結構,則結構及其內容將初始化為零。 正如評論中指出的那樣,這對於不同的數據類型意味着不同的東西。

  1. 整數(例如char,short,int,long,unsigned,unsigned int,long long等)將為0
  2. float和double將是數字0.0 [但它們包含的字節可能不是]
  3. 指針將為NULL
  4. struct padding可能未定義。
  5. 數組將根據其類型歸零。

如果在函數中定義結構或任何非靜態變量,則它們是未定義的。 在某些實現中,它們碰巧包含許多實現中堆棧上的內容,但這取決於體系結構。 在任何情況下,您可以假設在函數中聲明的結構,數組和變量沒有在它們前面的靜態單詞是未初始化的並且包含垃圾

您通常不會測試是否初始化結構,您只需要知道您定義的情況,以及是否已初始化它(及其子元素)。

確定結構體是否已初始化的唯一方法是檢查結構中的每個元素,看它是否與您認為該元素的初始化值相匹配。 如果要檢查指向結構的指針是否初始化為預定義狀態,您只需查看它是否包含NULL或您初始化它的特定地址。

暫無
暫無

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

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