Czy ktos wie czy funkcja w cpp moze zwracac tablice? Jesli tak
to podajce przyklad :]

8 Responses to “”

  1. rzyjontko October 2, 2006 at 7:42 pm #

    W C zwykle się zwraca wskaźnik do pierwszego elementu tablicy.

  2. radmen October 2, 2006 at 7:42 pm #

    no a jesli ta tablica istnieje tylko wewnatrz funkcji i wlasnie ja chce zwrocic?

  3. rzyjontko October 2, 2006 at 7:42 pm #

    Tego zrobić nie możesz. Ale jeśli funkcja nie odwołuje się rekurencyjnie do siebie, to możesz zrobić tak (zakładając, że interesuje Cię tablica intów):

    int *get_array(void)

    {

    static int array[100];

    return array;

    }

    Dzięki temu, że tablica jest statyczna, możesz zwrócić jej adres, ponieważ nie zostanie ona zdjęta ze stosu. Można również zaalokować odpowiednią ilość miejsca w ten sposób:

    int *get_array(void)

    {

    int *array = malloc(100 * sizeof(int));

    return array;

    }

    Z tym, że zaalokowaną pamięć elegancko jest zwolnić po zakończeniu używania. Statyczna tablica będzie istniała przez cały czas wykonania programu.

  4. radmen October 2, 2006 at 7:42 pm #

    hmm zaraz sprawdze, thx :)

  5. rzyjontko October 2, 2006 at 7:42 pm #

    To oczywiście tylko przykłady. Normalnie należy sprawdzić, czy malloc nie zwrócił NULLa i takie tam inne. Polecam zaopatrzenie się w http://www.wnt.pl/product.php?action=0&prod_id=481&hot=1 ewentualnie http://www.wnt.pl/product.php?action=0&prod_id=105&hot=1.

  6. radmen October 2, 2006 at 7:42 pm #

    heh ja mam Symfonie, ale najwyrazniej przez dlugi czas nie kodzenia cos mi sie wywialo..

    THX anyway :)

  7. radmen October 2, 2006 at 7:42 pm #

    hmm wszystko byloby fajnie pieknie, ale teraz mam problem bo nie moge w ten sposob zwrocic tablicy wielowymiarowej…

  8. rzyjontko October 2, 2006 at 7:42 pm #

    W C (jak również w C++) nie ma tablic wielowymiarowych. Są tylko tablice tablic.

    int **get_array(void)

    {

    static int array[100][100];

    return array;

    }