当实例化包含struct指针数组的结构时,
我保证struct array成员中的所有指针都将设置为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
?
答案 0 :(得分:16)
这取决于您初始化结构的方式。
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
}
“没有初始化”意味着所有成员都只有随机的垃圾值。 “Default-initialized”表示所有成员都将初始化为0,指针成员将等同于NULL
。 “零初始化”意味着所有内容都将按位设置为0.这仅适用于以{0}表示NULL
的平台。