我阅读了 Kernigan & Ritchie 的“C 编程语言”第二版的第 6.3 段。
一些结构:
struct key {
char *word;
int count;
} keytab[NKEYS] {
{ "auto", 0 },
{ "break", 0 },
{ "case", 0 },
{ "char", 0 },
{ "const", 0 },
{ "continue", 0 }
};
作者写道:
数量 NKEYS 是 keytab 中关键字的数量。虽然我们可以手动计算,但用机器计算要容易得多,也更安全,尤其是在列表可能发生变化的情况下。一种可能性是使用空指针终止初始化器列表,然后沿着 keytab 循环直到找到结尾。
如果枚举仅包含指针,一切都会很清楚:
struct key {
char *word;
char *description;
} keytab[NKEYS] {
{ "auto", "" },
{ "break", "" },
{ "case", "" },
{ "char", "" },
{ "const", "" },
{ "continue", "" }
{ NULL, NULL}
};
但是每条记录不仅有指针,而且int
也有。如果我对作者的理解正确,那么最后一条记录必须如下所示:
{ NULL, ? }
没有指针怎么办?
对于不包含指针的枚举,我该如何解决?例如:
enum myEnum {
int index;
inr count;
double value;
} myVariable[] {
{0,0,0},
{0,0,0},
{0,0,0},
{0,0,0},
{?,?,?}
};
谢谢你。