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