Информатика и технология программирования




Структуры переменной размерности


При создании структуры в динамической памяти возможен вариант, когда размерность ее является переменной. В этом случае функции, создающие такие структуры, должны вычислять ее текущий размер для функции malloc. Рассмотрим пример хранения в структуре строки переменной длины. В определении переменная часть представлена массивом нулевой размерности. При создании динамической переменной резервируется память под фиксированную часть структуры и текущую размерность переменной части -длину строки:


struct man
{
char name[30]; // Фиксированная часть


int dd,mm,yy;
char address[]; // Переменная часть


};
man *create()
{
man *p;
char xxx[200];
gets(xxx); // Ввод значения элемента address


p = malloc(sizeof(man) + strlen(xxx) + 1);
strcpy(p-&#62address, xxx);
// Ввод фиксированной части


return p;
}




Содержание  Назад  Вперед