Witam
Jestem w trakcie lektury niebieskiej księgi, czyta mi się ją bardzo przyjemnie, niemniej jednak utknąłem właśnie na wskaźnikach. Pozwolę sobie wkleić kawałek tekstu, który znajduje się w erracie:
Kod:
fun2(tab); // przekazanie adresu zerowego elementu do fun2
fun2(&tab[3]); // przekazanie adresu czwartego elementu do fun2
fun2(&(tab+5)); // przekazanie adresu szóstego elementu do fun2
Chodzi mi o trzecią linijkę tekstu. Może się mylę, w takim razie proszę o sprostowanie, ale wydaje mi się, że jeśli w funkcji odwołuję się do tablicy bez nawiasów kwadratowych, to tak jak bym się odwoływał do adresu początku tablicy. W naszym przypadku mamy tab+5, a więc odwołuję się do adresu zwiększonego o np. 5 bajtów (dla tablicy typu char). Zatem skoro odwołuję się już do adresu, to czy napisanie "&(tab+5)" nie jest błędem ("and" jakoś dziwnie mi się wyświetlił)? Bo to tak, jakby odwoływać się do adresu adresu.
I jeszcze jedna wątpliwość, mniejszej wagi. Chodzi mi o komentarz w pierwszej linijce:
Kod:
// przekazanie adresu zerowego elementu do fun2
Wydaje mi się że bardziej poprawnie jest napisać
Kod:
// przekazanie adresu pierwszego elementu do fun2
No bo jeśli tab (czyli &tab[0]) to adres zerowego elementu, natomiast &tab[3] to adres czwartego elementu, to coś mi się tu nie do końca zgadza. Zgodnie z tokiem myślenia z drugiej linijki &tab[2] będzie adresem trzeciego elementu, &tab[1] będzie adresem drugiego, a &tab[0] jest adresem zerowego? A gdzie pierwszy?
Ze wskaźnikami próbowałem oswoić się już dawno temu, jednak nie potrafiłem się do nich przyzwyczaić. Teraz czytając Mirkową książkę chcę zabrać się za nie raz a porządnie. Dlatego moje pytania to nie malkontenckie wyszukiwanie najmniejszych błędów znajdujących się w książce, tylko chęć jak najlepszego zrozumienia tematu i pozbycie się wątpliwości podczas lektury książki.
Pozdrawiam