Не могу проинициализировать массив структур |
Здравствуйте, гость ( Вход | Регистрация )
Не могу проинициализировать массив структур |
novichkov |
16.1.2012, 12:00
Сообщение
#1
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Подскажите, пожалуйста, как правильно записать структуру, в которой есть массив строк и проинициализировать ее. У меня:
компилятор ругается на const char *actions[] :
Хотя
работает нормально. |
|
|
Iron Bug |
16.1.2012, 12:19
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
если ты хочешь объявлять массив, то у элеметров должен быть известный заранее размер и он должен быть фиксированным.
в данный момент компилятор считает, что это const char *actions[0]. поставь нужное количество элементов (оно должно быть фиксированным, иначе массив не получится). |
|
|
novichkov |
16.1.2012, 13:27
Сообщение
#3
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Тогда почему const char *A[] = {"aa","bbb","c"}; компилируется нормально?
|
|
|
ilyabvt |
16.1.2012, 18:35
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Цитата Тогда почему const char *A[] = {"aa","bbb","c"}; компилируется нормально? Потому что в этом случае вы создаете массив размером 3. Хотя вы не задаете размер массив явно, компилятор может его посчитать, если вы сразу инициализируете массив конкретными значениями. |
|
|
Iron Bug |
16.1.2012, 18:59
Сообщение
#5
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
проблема не в размере массива, а в размере его элемента. так как массивы располагаются в памяти последовательно и каждый элемент массива имеет одинаковый тип (т.е. одинаковый размер). но у вложенного массива размер не определён явно и компилятор присваивает ему значение 0 (по умолчанию).
Сообщение отредактировал Iron Bug - 16.1.2012, 19:00 |
|
|
novichkov |
16.1.2012, 20:00
Сообщение
#6
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Спасибо за разъяснения. В итоге сделал так:
|
|
|
Текстовая версия | Сейчас: 20.4.2024, 15:40 |