Nie wiem czy dobrze myślę, ale jest też na to inny sposób, prócz statycznych tablic oczywiście.
Można utworzyć wskaźnik w obszarze zmiennych globalnych na pewne miejsce w pamięci (zaalokować wstępnie 1 bajt pamięci dla uzyskania adresu). Następnie we własnej funkcji można użyć funkcji "realloc", która powiększy ten obszar pamięci o konkretną wartość. Dzięki temu uzyskujemy poprawne wskazanie oraz niezmienne dane niezależne od miejsca ich lokowania. Zwracany wskaźnik w tym przypadku będzie poprawny i myślę, że ma to szanse działać

Zamieszczam przykładowy kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Można zmodyfikować funkcje tak, aby mogły pobierać jako parametr dowolny adres w pamięci (może być to również zmienna lokalna dla funkcji "main"), a następnie powiększać go o 1 bajt. Zakładam tutaj że funkcja "malloc" oraz "realloc" automatycznie zeruje nowoutworzone komórki pamięci. W przeciwnym razie trzeba im przypisać wartość 0, albo użyć funkcji "memset" dla większych bloków alokowanej pamięci.