[C++]Tablice dwuwymiarowe - wskaźniki do elementów tych tablic.
Ostatnio zmodyfikowano 2015-08-28 23:13
Cansisti |
» 2015-08-28 15:38:08 Nie ma elementu [3][2] w tablicy zadelkarowanej jako [3][5] (pamiętaj że liczenie zaczynamy od zera) Jeśli zmienną wsk_wsk_w zadeklarujesz int * wsk_wsk_w = & tab_w[ 0 ][ 0 ] to do elementu [x][y] uzyskasz dostęp poprzez *( wsk_wsk_w + x * 5 + y ) Lub po prostu wsk_wsk_w[ x * 5 + y ] @Monika90 Robiąc tak: int a[ 3 ][ 5 ] = { { 0, 1, 2, 3, 4 }, { 5, 6, 7, 8, 9 }, { 10, 11, 12, 13, 14 } }; int * b = & a[ 0 ][ 0 ]; cout << b[ 7 ];
Niejako rzutujemy tablicę dwuwymiarową na jednowymiarową, więc mamy w niej 15 elementów (3*5), czy się mylę? |
|
1aam2am1 |
» 2015-08-28 17:15:53 Moim zdaniem przy takiej tablicy tak. Bo mamy dwa rodzaje tablic dwuwymiarowych. int tablica[ 5 ][ 3 ];
int ** tablica; tablica = new int *[ 5 ];
for( int i = 0; i < 5; ++i ) { tablica[ i ] = new int[ 3 ]; }
|
|
Frish Temat założony przez niniejszego użytkownika |
» 2015-08-28 23:13:48 Zgadza się w przypadku wskaźnika na tablice wsk[ 3 ][ 5 ] jak najbardziej jest to tablica 15-elementowa jednowymiarowa ale poruszając się po tablicy tego typu łatwiej dla wyobraźni powiedzieć o elemencie [3][2]. Dlatego też moje pytanie było tak skonstruowane i chciałem się upewnić czy wszystko poprawnie robię bo algorytm dostępu na pewno można ułożyć w różny sposób. Inaczej sprawa się ma chyba w przypadku tablicy zarezerwowanej przez dynamiczną alokację bo tam tablica wskaźników - czyli pierwszy wymiar daje dostęp do drugiego wymiaru czyli zwykłych tablic jednowymiarowych. |
|
1 « 2 » |