У меня есть следующий код на C:
Две структуры:
typedef struct
{
int age;
int phone;
} Student;
typedef struct
{
int classNum;
Student student[1];
} ClassRoom;
А затем я создал память для 10 учеников:
ClassRoom * classRoom = (ClassRoom*)malloc(sizeof(ClassRoom) + sizeof(Student) * 9);
Затем я пытаюсь перебрать всех студентов:
int i = 0;
for(i = 0; i < 10; i++)
{
classRoom->student[i].age = 20;
classRoom->student[i].phone = 20;
}
Затем я получил предупреждение о ворсе:
Warning 662: Possible creation of out-of-bounds pointerby operator '[
Похоже, в этих двух строках есть предупреждения:
classRoom->student[i].age = 20;
classRoom->student[i].phone = 20;
В чем проблема и как ее исправить? Я не могу изменить структуру ClassRoom
, и есть ли способ решить эту проблему?
warning C4200: nonstandard extension used : zero-sized array in struct/union
. - person Jabberwocky   schedule 21.03.2014