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

Odpowiedz Nowy wątek
2015-02-12 16:30
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.

Pozostało 580 znaków

2015-02-12 16:33
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;
}
edytowany 1x, ostatnio: twonek, 2015-02-12 16:38

Pozostało 580 znaków

2015-02-12 16:37
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);
edytowany 1x, ostatnio: hauleth, 2015-02-12 16:38

Pozostało 580 znaków

2015-02-12 16:52
0

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

Przy czym new to niekoniecznie będzie najszczęśliwsza nazwa. ;) - alagner 2015-02-13 13:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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