当实例化包含结构指针数组的结构时,
我是否保证 struct 数组成员中的所有指针都将设置为 NULL

这是一个示例结构:

typedef struct mmNode {
  int val;
  int board[2][NUM_PITS+1];
  int side;
  struct mmNode* children[NUM_PITS+1];
} mmNode;

IE:如果我创建 mmNode 结构的实例, mmNode.children 的元素是否总是设置为 NULL

最佳答案

这取决于你如何初始化你的结构。

mmNode a;                              // Everything default-initialized

void foo()
{
    static mmNode b;                   // Everything default-initialized

    mmNode  c;                         // Nothing initialized
    mmNode  d = { 0 };                 // Everything default-initialized
    mmNode *p = malloc(sizeof(*p));    // Nothing initialized
    mmNode *q = calloc(1, sizeof(*q)); // Everything zero-initialized
}

“没有初始化”意味着所有成员将只有随机的垃圾值。 “默认初始化”意味着所有成员都将被初始化为 0,对于指针成员,这相当于 NULL 。 “零初始化”意味着一切都将按位设置为 0。这仅适用于 NULL 用按位 0 表示的平台。

关于带有指针初始化的 C 结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7056943/

10-11 00:53