Problem z tablicami w argumentach
Ostatnio zmodyfikowano 2009-12-10 22:19
eBbi Temat założony przez niniejszego użytkownika |
Problem z tablicami w argumentach » 2009-12-10 18:44:15 Witam Mam taki mały problem z funkcją a dokładniej z jednym z trzech argumentów. Tym argumentem jest tablica dwu wymiarowa: Definicja void zapis(int,int,int);
Kod Funkcji void zapis(int figura, int poziom, int pion) { for(int i=0;i < 50;i++) { 517 -> if(!figura[i][0]) { 519 -> figura[i][0]=1; 520 -> figura[i][1]=poziom; 521 -> figura[i][2]=pion; 522 -> figura[i][3]=poziom-mouse_x; break; } } }
Wywołania Funkcji else if(mouse_b == 0 && kurs > 3) { if(kurs==4) zapis(troj[50][5],poziom,pion); else if(kurs==5) zapis(kolk[50][5],poziom,pion); else if(kurs==6) zapis(pros[50][5],poziom,pion); kat(kurs); }
Błędy -In function `void zapis(int, int, int)': -517 `int[int]' for array subscript -519 `int[int]' for array subscript -520 `int[int]' for array subscript -521 `int[int]' for array subscript -522 `int[int]' for array subscript
Szukałem na google i znalazłem wiele tematów z tą treścią ale żaden nie rozwiązuje mojego problemu. PZD eBbi |
|
DejaVu |
» 2009-12-10 18:59:24 Przekazywanie tablic dwuwymiarowych do funkcji to zuo. Powody: 1) Musisz podać wskaźnik na dane 2) Musisz podać rozmiar pierwszego wymiaru 2) Musisz podać rozmiar drugiego wymiaru W konsekwencji musiałoby to wyglądać tak: void funkcja( int tab[][ 10 ], int size1, int size2 ) { for( int i = 0; i < size1; i++ ) for( int j = 0; j < size2; j++ ) { std::cout << tab[ i ][ j ] << " "; } }
int tablica[ 20 ][ 10 ]; funkcja( tablica, 20, 10 );
|
|
Elaine |
» 2009-12-10 19:58:40 To się nie skompiluje - tablica jest niejawnie konwertowalna do wskaźnika, czyli z int[11] może się zrobić int*. Z int[11][8] może się zrobić w najlepszym wypadku int (*)[8], ale już nie int** - mamy tablicę ośmioelementowych tablic int, nie tablicę wskaźników, a dla typu wskazywanego żadne konwersje już nie zajdą. Jakby zachodziły, to możnaby przypisać int* do float*, a tego chyba nie chcemy, nie? |
|
DejaVu |
» 2009-12-10 22:19:26 Poprawiłem... nie chciało mi się sprawdzać czy się kompiluje i taki kwiatek wyszedł przez brak myślenia. |
|
« 1 » |