Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przekazywanie tablic wielowymiarowych do funkcji

Ostatnio zmodyfikowano 2013-05-06 19:54
Autor Wiadomość
Tymianek
Temat założony przez niniejszego użytkownika
Przekazywanie tablic wielowymiarowych do funkcji
» 2013-05-06 19:32:46
Napisałem najprostszy możliwy kod przekazujący tablicę jednowymiarową do funkcji:
C/C++
void funkcja( int * tab );

int main()
{
    int tablica[ 10 ];
    funkcja( tablica );
}

void funkcja( int * tab )
{
    tab[ 1 ] = 5;
    tab[ 2 ] = 7;
}
i chciałem powiększyć sobie tablicę do dwóch wymiarów, jednak z marnym skutkiem:
C/C++
void funkcja( int ** tab );

int main()
{
    int tablica[ 10 ][ 10 ];
    funkcja( tablica );
}

void funkcja( int ** tab )
{
    tab[ 1 ][ 5 ] = 5;
    tab[ 2 ][ 1 ] = 7;
}
kompilator informuje mnie o błędzie przy wywołaniu funkcji, konkretnie w tym miejscu:
C/C++
funkcja( tablica );
Kompilator wyświetla mi:
error: cannot convert 'int (*)[10]' to 'int**' for argument '1' to 'void funkcja(int**)'

Szukałem odpowiedzi w Google, ale znalazłem jedynie materiały odnośnie tworzenia funkcji, a nie jej wywoływania.
Jak powinienem ją wywołać?
P-82222
MrPoxipol
» 2013-05-06 19:45:00
http://www.coderscity.pl/sutra51865.html&sid=a63450b0cf01580230abcad7439e8806#51865

Przy statycznych dwuwymiarowych tablicach, kompilator musi znać ilość wszystkich elementów, bez pierwszego.
P-82223
Tymianek
Temat założony przez niniejszego użytkownika
» 2013-05-06 19:54:51
Dziękuję MrPoxipol.
Więc rozwiązanie tego problemu wygląda następująco:
C/C++
void funkcja( int tab[][ 10 ] );

int main()
{
    int tablica[ 10 ][ 10 ];
    funkcja( tablica );
}
void funkcja( int tab[][ 10 ] )
{
    tab[ 1 ][ 5 ] = 5;
    tab[ 2 ][ 1 ] = 7;
}
Gdzieś przeczytałem, że przy tablicach dwuwymiarowych w funkcji trzeba wstawić ** i to było przyczyną błędu.
P-82230
« 1 »
  Strona 1 z 1