C结构带指针初始化[英] C struct with pointers initialization

本文是小编为大家收集整理的关于C结构带指针初始化的处理方法,想解了C结构带指针初始化的问题怎么解决?C结构带指针初始化问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

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

这是一个示例结构:

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

ie:如果创建mmnode struct的实例,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代表的平台上工作.

本文地址:https://www.itbaoku.cn/post/359378.html