Этот пример работает отлично:Инициализация массива указателей на указатели
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, должен быть идентичным - создать массив и заполнить его указателями на два массива char.
Может ли кто-нибудь объяснить мне, почему второй пример неверен?
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
};
Но это похоже на слишком много работы :).
4 ответа, но я вижу только один? Как так? – Ree
Удалено автором. –
У меня это случилось на днях. Кажется, что у вас есть время, чтобы полностью учитывать удаленные ответы. Он будет рассчитывать на правильный счет «скоро». – RBerteig