#c #arrays #struct
#c #массивы #структура
Вопрос:
struct dataStruct { const char* s; int num; };
struct Final_struct { int n; dataStruct a[]; };
Теперь проблема возникает, когда я пытаюсь инициализировать Final_struct следующим образом:
const Final_struct Example[]= {
{100, { {"age", 20}, {"iq", 120}, {"bmi",26} } },
{100, { {"age", 36}, {"iq", 145}, {"bmi",22} }}
};
Это код на c, и когда я пытаюсь скомпилировать его, выдает ошибку компилятора :
Fields of the object can not have arrrays of size 0
Есть предложения?
Спасибо.
Комментарии:
1. Вы должны были получить тонны ошибок компилятора, а не только одну…
Ответ №1:
dataStruct a[]
определяет элемент структуры как массив размера 0
. Это практически бесполезно. Вам нужно указать его размер в определении struct
, потому что компилятору необходимо заранее знать размер всего struct
массива.
Или вы можете просто объявить поле как dataStruct *a
и тогда сам массив не будет содержаться в struct
.
Ответ №2:
Если это C, то что это string
? Почему вы ожидаете, что сможете инициализировать его из того, что выглядит как другие переменные?
Попробуйте const char *
для s
и инициализируйте из строковых литералов, заключенных в кавычки.
Ответ №3:
вы забыли кавычки в своих строках?
«возраст»
Комментарии:
1. спасибо, что заметили, но проблема не в этом… Я допустил ошибку при написании примера. исправит это.
Ответ №4:
Вы пробовали заключать строковые константы в двойные кавычки?
Ответ №5:
Есть предложения?
Попробуйте:
/* note the explicit array size for a[] */
struct Final_struct { int n; struct dataStruct a[3]; };
Комментарии:
1. Спасибо. Иногда я серьезно сомневаюсь в своих возможностях кодирования.
Ответ №6:
массив ‘a’, который объявлен внутри структуры с именем Final_struct, должен иметь размер. не зная размер этой переменной, компилятор не может назначить память для этой переменной. итак, сначала вы должны выделить размер…