[英]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.