• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Referencja a wskaźnik.

Object Storage Arubacloud
0 głosów
14,874 wizyt
pytanie zadane 10 czerwca 2015 w C i C++ przez Ins0mniaC Obywatel (1,400 p.)
zamknięte 10 czerwca 2015 przez Ins0mniaC
Potrzebuję na szybko różnicy między referencją i wskaźnikiem wyłożone łopatologicznie. Ktoś z zacięciem dydaktycznym się odezwie?:D albo mi się wydaje albo jeśli przesyłamy zmienną za pomocą referencji to funkcja działa na oryginale zmiennej (zmienia jej wartości również w funkcji main), a wskaźnik nie. Czy to prawda?
komentarz zamknięcia: Wyjaśnione :)

2 odpowiedzi

+5 głosów
odpowiedź 10 czerwca 2015 przez draghan VIP (106,230 p.)
wybrane 10 czerwca 2015 przez Ins0mniaC
 
Najlepsza

Piszę dla 'potomnych', którzy tu być może zajrzą i być może zasugerują się tym, że

podając wskaźnik, wszystko będzie działać szybciej (...) a "zmienna referencyjna" pozwala ci po prostu podawać funkcji oryginalne argumenty, ale i tak musi tego adresu sobie poszukać.

Ooooookej, cała odpowiedź Crissa z przymrużeniem oka przejdzie - ale bez Jego ostatniego komentarza, który jest nieprawdą, a którego najbardziej mylący fragment zacytowałem wyżej. ;)

Referencji używa się wygodniej, niż wskaźnika, bo nie trzeba zaciemniać kodu operatorami dereferencji (gwiazdkami). Poza tym jest jedna drobna różnica, którą najlepiej wyjaśnię, po prostu cytując za

http://pl.wikibooks.org/wiki/C%2B%2B/Referencje

Referencja w swym działaniu przypomina wskaźniki. Różnica polega jednak na tym, że do referencji można przypisać adres tylko raz, a jej dalsze używanie niczym się nie różni od używania zwykłej zmiennej [tu moje wtrącenie: nie różni się od strony programisty, bo 'od kuchni' przekazywany jest sam adres, a więc nie ma kopiowania, co dla dużych obiektów daje profity wydajnościowe]. Operacje jakie wykona się na zmiennej referencyjnej, zostaną odzwierciedlone na zmiennej zwykłej, z której pobrano adres.

+4 głosów
odpowiedź 10 czerwca 2015 przez criss Mędrzec (172,590 p.)
To jest w zasadzie jedno i to samo. Podając przez referencje (&), dajesz funkcji oryginalną zmienną, tzn. nie jest ona kopiowana, czyli podajesz wskaźnik do zmiennej na dobrą sprawe.
komentarz 10 czerwca 2015 przez Ins0mniaC Obywatel (1,400 p.)
Ale jakaś różnica musi być, z tego co wspominał mi wykładowca. Podobno częste pytanie przy rozmowach o prace :D
komentarz 10 czerwca 2015 przez criss Mędrzec (172,590 p.)

W sumie zainteresowałeś mnie :D Znalazłem to: http://lublin.webd.pl/crayze/cpp-winapi/cpp9.html

Jak na mój rozum praktyczna różnica jest taka, ze podając wskaźnik, wszystko będzie działać szybciej (bo odrazu program zna komorke pamieci), a "zmienna referencyjna" pozwala ci po prostu podawać funkcji oryginalne argumenty, ale i tak musi tego adresu sobie poszukać.

komentarz 10 czerwca 2015 przez draghan VIP (106,230 p.)
edycja 10 czerwca 2015 przez draghan
Treść komentarza przeniosłem do osobnej odpowiedzi i rozbudowałem, żeby ci, którzy już tu zajrzeli wcześniej, mieli okazję naprawić swój światopogląd. ;)

Podobne pytania

0 głosów
4 odpowiedzi 1,143 wizyt
pytanie zadane 21 lutego 2017 w C i C++ przez Danthee Początkujący (260 p.)
0 głosów
1 odpowiedź 327 wizyt
pytanie zadane 4 marca 2023 w JavaScript przez TOWaD Mądrala (5,700 p.)
+1 głos
1 odpowiedź 1,568 wizyt
pytanie zadane 9 maja 2021 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

92,574 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...