在结构中将指针数组初始化为NULL

时间:2014-11-23 22:32:23

标签: c arrays pointers struct null

给定struct声明(其中data是指向另一个struct的指针数组):

typedef struct {
    B* data[10];
} A;

结构中的指针数组似乎不会自动初始化为NULL:

struct A myA;
myA.data[0] == NULL (false!)

有没有办法强制将数组初始化为NULL而不明确地执行它?

1 个答案:

答案 0 :(得分:1)

任何类型的对象都可以初始化为零:

struct A myA = { 0 };

这会将第一个标量成员或元素(递归地为嵌套数组,结构和联合定义)初始化为0转换为适当的类型,如果它是指针,则为空指针值。所有剩余的成员或元素也初始化为零。

有些编译器可能会警告您缺少初始化程序;由于= { 0 }是或者应该是“将所有内容初始化为零”的常用习惯用法,因此您可以忽略该警告。