Przekazywanie tablic wielowymiarowych do funkcji
Ostatnio zmodyfikowano 2013-05-06 19:54
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: 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: 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: 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ć? |
|
MrPoxipol |
» 2013-05-06 19:45:00 |
|
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: 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. |
|
« 1 » |