J'ai lu le 6.3e paragraphe de la deuxième édition "C programming language", par Kernigan & Ritchie.Pointeur NULL comme marqueur de fin de tableau
Certains structure:
struct key {
char *word;
int count;
} keytab[NKEYS] {
{ "auto", 0 },
{ "break", 0 },
{ "case", 0 },
{ "char", 0 },
{ "const", 0 },
{ "continue", 0 }
};
Auteurs écrit à ce sujet:
La quantité nkeys est le nombre de mots-clés dans keytab. Bien que nous pouvez compter cela à la main, il est beaucoup plus facile et plus sûr de le faire par machine, surtout si la liste est sujette à changement. Une possibilité serait de terminer la liste des initialiseurs avec un pointeur nul, puis boucle le long de keytab jusqu'à ce que la fin soit trouvée.
Tout serait clair si ENUM contenait des pointeurs seulement:
struct key {
char *word;
char *description;
} keytab[NKEYS] {
{ "auto", "" },
{ "break", "" },
{ "case", "" },
{ "char", "" },
{ "const", "" },
{ "continue", "" }
{ NULL, NULL}
};
Mais chaque enregistrement a pointeur non seulement, mais aussi et int
. Si je comprends bien les auteurs, alors un dernier enregistrement doit être comme suit:
{ NULL, ? }
Qu'en est-il des pointeurs?
Comment puis-je le résoudre pour les énumérations qui ne contiennent pas les pointeurs? Par exemple:
enum myEnum {
int index;
inr count;
double value;
} myVariable[] {
{0,0,0},
{0,0,0},
{0,0,0},
{0,0,0},
{?,?,?}
};
Merci.
Oui, je le comprends. –