Этот пример отлично работает:
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}
};
На мой взгляд, в первом примере создается массив, заполненный указателями на два строковых литерала (которые сами являются массивами). Второй пример, IMO, должен быть идентичным - создать массив и заполнить его указателями на два массива символов.
Может ли кто-нибудь объяснить мне, почему второй пример не так?
P.S. Возможно, вы могли бы написать это так (еще не проверял):
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
};
Но это выглядит слишком много работы:).