繁体   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