Wpis z mikrobloga

dlaczego arytmetyka na wskaźnikach jest możliwa,


@ly000: btw, arytmetyka na wskaźnikach w C++ jest możliwa tylko w bardzo szczegolnych przypadkach, tj tylko jeśli mamy wskaźniki tego samego typu pochodzące z tego samego obiektu. Czyli można tak przeglądać tablice, ale nie jest dozwolone np obliczanie różnicy między dwoma arbitralnymi wskaźnikami. Czyli jednak wskaźniki C++ nie są wskaźnikami w myśl definicji jak pisałeś wyżej tylko właśnie abstrakcyjnymi referencjami implementowanymi pod spodem jako
  • Odpowiedz
Słowa "referencja" i "wskaźnik" to ogólnie synonimy.

ani wikipedia ani literatura tego nie potwierdzają. zauważasz podobieństwa, ale pomijasz różnice. jakbym powiedział, że kaczka i gęś to dwa różne zwierzęta, to też byś napisał tekst, że to jest to samo, bo mają dzioby, pióra i potrafią pływać? wskaźnik i referencja to są koncepty z dziedziny informatyki, a nie jakieś składnie językowe. wskaźnik to jest typ referencji, ale referencja nie jest typem wskaźnika. nie
  • Odpowiedz
mogę w javie napisać funkcje swap,


@ly000: nie możesz. Nie możesz napisać funkcji która zamienia miejscami wartości przekazane jako argumenty i zamiana jest widoczna po powrocie z funkcji.

int a = 0;
int b
  • Odpowiedz
Czyli można tak przeglądać tablice, ale nie jest dozwolone np obliczanie różnicy między dwoma arbitralnymi wskaźnikami. Czyli jednak wskaźniki C++ nie są wskaźnikami w myśl definicji jak pisałeś wyżej tylko właśnie abstrakcyjnymi referencjami implementowanymi pod spodem jako wskaźnik, zupelnie jak w Javie. Ba, jak do wskaznika w C++ dodasz 1 to wartość adresu wcale nie musi zwiększyć się o 1, czyli już masz tu abstrakcję.


@Krolik: (
  • Odpowiedz
ani wikipedia ani literatura tego nie potwierdzają.


@ly000: synonim nie oznacza że pojęcia są dokładnie takie same, subtelne różnice mogą występować. Ok, zgoda że, referencja jest konceptem bardziej ogólnym. Niemniej akurat w javie referencje są implementowane jako wskaźniki (do tego zupelnie nagie wskaźniki o tej samej szerokości co by były w C na tej samej architekturze), więc stwierdzenie "Java nie ma wskaźników" jest błędne. No i w praktyce, dla codziennego progtamowania
  • Odpowiedz