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