C struct avec initialisation des pointeurs

Quand une structure contenant un tableau de pointeurs de structure est instanciée, suis-je assuré que tous les pointeurs du membre de tableau de structure seront définis sur NULL ?

Voici un exemple de structure:

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

IE: Si je crée une instance de la structure mmNode, les éléments de mmNode.children seront- mmNode.children toujours définis sur NULL ?

Cela dépend comment vous initialisez votre structure.

 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 } 

“Rien d’initialisé” signifie que tous les membres auront juste des valeurs de junk aléatoires. “Initialisé par défaut” signifie que tous les membres seront initialisés à 0, ce qui pour les membres de pointeur sera équivalent à NULL . “Zéro-initialisé” signifie que tout sera mis à 0, bit par bit. Cela fonctionnera uniquement sur les plates-formes où NULL est représenté avec 0 bit à bit.