Quote (froex)
Если мне не изменяет память, то массивы переменной длины ввели именно в С99.
  
 Quote (froex)
В С89 ещё не было структур вроде, это тоже усложнит задачу с организацией своего массива, а то можно было бы сделать массив массивов и переопределить вторые скобки...
  
 
 Пишите еще.  
Quote (froex)
У меня есть совет - использовать минимум С99. Где же это понадобилось динозавров копать? Единственное, что на ум пришло - старые контроллеры.
   C99 несовместим с C++ (в отличие от C89, он же ANSI C), из-за чего не поддерживается некоторыми компиляторами. Поэтому часто используется именно C89. 
 Pesets 
 
Quote
Стек (англ. stack — стопка) — структура данных, в которой доступ к элементам организован по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю. 
 Добавление элемента, называемое также проталкиванием (push), возможно только в вершину стека (добавленный элемент становится первым сверху). Удаление элемента, называемое также выталкиванием (pop), тоже возможно только из вершины стека, при этом второй сверху элемент становится верхним.
   http://ru.wikipedia.org/wiki/Стек 
 Не понимаю, в чем проблема. Помещаешь в цикле for в стек все элементы массива, а затем - их количество. Ну и при извлечении наоборот - извлекаешь количество элементов и после этого сами элементы (в обратном порядке), опять же в цикле. Какая куча? Какой alloca? Какой C99?! 
 
 З.Ы. Керниган и Ричи "Язык программирования Си" - хороший учебник по C для начинающих.