我声明了一个结构,我想检查它是否已经初始化。我该怎么做?
我试过了:
struct mystruct str1;
if(str1 != NULL)
if(str1->name != NULL)
struct是一个链表,还包含int和char等类型的属性。
答案 0 :(得分:6)
如果在包含main()
的任何函数声明 之外的结构,则结构及其内容将初始化为零。正如评论中指出的那样,这对于不同的数据类型意味着不同的东西。
如果在函数中定义结构或任何非静态变量,则它们是未定义的。在某些实现中,它们碰巧包含许多实现中堆栈上的内容,但这取决于体系结构。在任何情况下,您可以假设在函数中声明的结构,数组和变量没有前面的静态单词未初始化并包含垃圾。
您通常不会测试是否初始化结构,您只需要知道您定义的情况,以及是否已初始化它(及其子元素)。
确定结构体是否已初始化的唯一方法是检查结构中的每个元素,看它是否与您认为该元素的初始化值相匹配。如果要检查指向结构的指针是否初始化为预定义状态,您只需查看它是否包含NULL或您初始化它的特定地址。