当实例化包含结构指针数组的结构时,
我是否保证 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/