[英]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()
之外聲明結構,則結構及其內容將初始化為零。 正如評論中指出的那樣,這對於不同的數據類型意味着不同的東西。
如果在函數中定義結構或任何非靜態變量,則它們是未定義的。 在某些實現中,它們碰巧包含許多實現中堆棧上的內容,但這取決於體系結構。 在任何情況下,您可以假設在函數中聲明的結構,數組和變量沒有在它們前面的靜態單詞是未初始化的並且包含垃圾 。
您通常不會測試是否初始化結構,您只需要知道您定義的情況,以及是否已初始化它(及其子元素)。
確定結構體是否已初始化的唯一方法是檢查結構中的每個元素,看它是否與您認為該元素的初始化值相匹配。 如果要檢查指向結構的指針是否初始化為預定義狀態,您只需查看它是否包含NULL或您初始化它的特定地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.