这个例子很好用:
static char *daytab[] = {
"hello",
"world"
};
这个不行:
static char *daytab[] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
我认为第一个例子创建了一个数组,其中填充了指向两个字符串字面值(它们本身就是数组)的指针。在我看来,第二个例子应该是相同的 - 创建一个数组并用指向两个字符数组的指针填充它。
有人能解释一下为什么第二个例子是错误的吗?
附言:你可能可以这样写(没有测试过):
static char a[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static char b[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static char *daytab[] = {
a,
b
};
但这看起来太麻烦了 :).