Witam, powracam z nowymi problemami :(
Czytam o wskaznikach i ich relacjach z tablicami. Z tego co rozumiem, tablica "int a[5]" jest wskaznikiem na pierwszy element tej tablicy. W 2-wymiarowej tablicy "int a[2][5]" napisanie "a[0]" zwraca wskaznik na pierwszy "rzad" tej tablicy, czy tez na pierwszy element, ktory jest tablica. Mam jednak problem z odcyfrowaniem ponizszego przykladu z ksiazki:
int ROWS = 2, COLS = 5, a[ROWS][COLS], (*p)[COLS], i;
for (p = &a[0]; p < &[ROWS]; p++) {
(*p)[i] = 0;
}
Pomijajac kwestie pre i postinkrementacji (ktorej jestem teraz swiadom, dzieki): "p" jest wskaznikiem na tablice liczb calkowitych o rozmiarze "COLS". Zakladam wiec, ze "p++" przesunie wskaznik wlasnie o rozmiar takiej tablicy? Co jednak oznacza "p = &a[0]"? Samo "a[0]" to pobranie elementu zerowego tablicy, czyli w tym wypadku tablicy. Dokladniej - wskaznika na pierwszy element tej "wewnetrznej" tablicy. Nastepnie na tym wskazniku uzywamy operatora "&" - ktory zwraca nam adres... wskaznika?
Porownalem adresy i byly takie same dla "a[0]" i "&a[0]", ale nie moglem uzywach tych dwoch wyrazen zamiennie.
Moglby ktos rozpisac, krok po kroku, ktore zmienne maja jakie wartosci i dlaczego? Wedlug autora ten kawalek kodu ma zerowac i-ta kolumne.