для одного измерения массивов вы можете сделать что-то вроде этого:
struct TEST {
...
int size;
char string[];
}
где поле размера указывает, сколько символов в массиве строк. Массив должен быть последним членом структуры, и вы должны динамически распределять память структуры. В этом случае выделенный размер должен быть sizeof(struct TEST) + size * sizeof(char)
.
В структуре не может быть больше одного массива переменных. Многомерные массивы переменного размера сложнее. Это невозможно, если только один размер не известен, в частности, размер первого измерения.
struct TEST {
...
int size;
char string[][100];
}
EDIT:
Как уже упоминалось другие плакаты, вы можете есть указатели на один или несколько массивов, за счет того, чтобы управлять ими области памяти отдельно от структуры.
EDIT 2:
Это часть, по меньшей мере, со стандартом ISO C99. Бесстыдно копировать из пункта 6.7.2.1, подпункт 16:
16 В особом случае, последний элемент структуры с более чем одним именем элемента может иметь неполный тип массива; это называется гибким элементом массива . С двумя исключениями, , элемент гибкого массива игнорируется. Во-первых, размер структуры должна быть равна смещению последнего элемента другой идентичной структуры, которая заменяет гибкий элемент массива с массивом неустановленный length.106) ...
Какая у вас проблема? – Sudantha 2010-12-08 08:39:28