(C) funkcja zwracająca tablicę o określonej przeze mnie nazwie

0

Witam wszystkich.
Zastanawia mnie jak napisać funkcję inicjalizującą i zwracającą tablicę o określonej przeze mnie nazwie, typie i rozmiarze (mając do dyspozycji składnię C).
W skrócie gdzieś w programie chcę mieć 4elementową tablicę typu integer o nazwie pxarr:

init (integer, "pxarr", 4);
*(pxarr+3)... cośtam

Omijam definicję funkcji bo sobie z nią nie radzę. Dzięki.

0
int* pxarr = init(INTEGER, 4);

gdzie INTEGER to jakiś enum. Funkcja potem oczywiście sprawdza enum i tworzy tablicę odpowiedniego typu. Nie wiem czy w C da się przekazać typ i operować na nim.

Można też się pokusić o coś takiego, ale większego sensu nie widzę:

#include <stdio.h>

void* init(int typesize, int size)
{
	return malloc(size * typesize);	
}

int main() 
{
	int* tab = (int*) init(sizeof(int), 4);
	tab[0] = 5;
	tab[3] = -1;
	printf("%d %d\n", tab[0], tab[3]);
	
	free(tab);
	return 0;
}
2

Nie da się "dynamicznie" określić nazwy zmiennej. Funkcja jakiej potrzebujesz już istnieje i nazywa się malloc. Jeśli chciał byś "uprościć" sobie zapis to możesz dać coś takiego:

#define new(T, size) ((T*) malloc(sizeof(T) * size))

int *pxarr = new(int, 4);
0

Rzeczywiście makro upraszcza życie. Dzięki wszystkim :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1