Я думаю, что вы работаете с некоторыми устаревшими предположениями. Я уже несколько месяцев кодирую на простом C, используя GCC, и вам не нужно объявлять переменные в начале блока, даже если второе издание K & R говорит, что вы должны это сделать. Вы можете объявить вашу переменную в любом месте, например, как этот не очень полезный пример:
char* palstring;
palstring = malloc(LARGEST_STRING);
memset(palstring, 0, sizeof palstring);
fgets(palstring, LARGEST_STRING, fin);
char* cur = palstring;
char letter;
letter = *cur;
Так что нет необходимости делать то, что вы предлагаете. Язык перешел на.
Еще одним хорошим дополнением к языку C являются массивы переменной длины, которые позволяют передавать массив функции вместе с его размером. В старые времена все, что вы могли сделать, это передать указатель.