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

[C++]Tablice dwuwymiarowe - wskaźniki do elementów tych tablic.

Ostatnio zmodyfikowano 2015-08-28 23:13
Autor Wiadomość
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:
C/C++
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 ]; //output: 7
Niejako rzutujemy tablicę dwuwymiarową na jednowymiarową, więc mamy w niej 15 elementów (3*5), czy się mylę?
P-137000
1aam2am1
» 2015-08-28 17:15:53
Moim zdaniem przy takiej tablicy tak.
Bo mamy dwa rodzaje tablic dwuwymiarowych.
C/C++
///1.
int tablica[ 5 ][ 3 ]; //niby dwa wymiary

///2.
int ** tablica; //wskaźnik na wskaźnik
tablica = new int *[ 5 ]; //pierwszy wymiar 5 elementow

for( int i = 0; i < 5; ++i ) //drugi wymiar trzy elementy
{
    tablica[ i ] = new int[ 3 ];
}

///I nasza tablica tez teraz jest [5][3] ale jej działanie jest inne
P-137006
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.
P-137019
1 « 2 »
Poprzednia strona Strona 2 z 2