[C++]wskaźniki


(pain3hp) #1

Spotkałem się z wskaźnikami w języku C++ zupełnie nie mogę pojąć o co chodzi i na co to komu? po co adres to danych skoro można je mieć odrazu i po co sobie utrudniać? Czy może to ktoś omówić najlepiej na przykładzie?


(Sawyer47) #2

A po co np. kopiować całą wartość do funkcji skoro można przesłać tylko adres zmiennej? Ponadto jeśli alokujesz pamięć dynamicznie funkcją malloc/operatorem new, zwracany jest wskaźnik na zaalokowaną pamięć - choćby do tego się przydają. Poczytaj http://pl.wikipedia.org/wiki/Zmienna_wska%C5%BAnikowa


([alex]) #3
unsigned ZliczWartosciTablicy(int wartosc,int Tb[],unsigned rozmiar)

(Ryan) #4

Utrudniać? Wskaźnik jest naturalnym konstruktem wynikającym z działania komputera. Każda informacja znajduje się gdzieś w pamięci. Adres w pamięci jest opisany właśnie za pomocą wskaźnika. Jako że dynamicznie (w czasie wykonywania programu) tworzone dane (zmienne) mogą być wyłącznie rozpoznane za pomocą adresu pod którym się znajdują, konieczne jest istnienie wskaźnika.


(system) #5

Zapewne kolega o wskaźnikach usłyszał w szkole, gdzie pisze się proste programiki i tak naprawdę do tego typów programów rzadko kiedy widać potrzebę zastosowania wskaźników, bo przy tych 'aplikacjach' jest używane bardzo mało pamięci. Co innego gdybyś te programiki pisał kilka lat temu:) wtedy zastosowanie wskaźników miało by dla Ciebie bardzo duże znaczenie;)


(Kanaliaon) #6

Wskaźniki są przydatne do "obsługi" obiektów dynamicznych, któe nie mają nazwy, da się do nich dostać tylko wskaźnikiem.

Można za ich pomocą dostać się do konkretnej komórki pamięci - przydatne w programowaniu mikrokontrolerów.

Można za ich pomocą elegancko operować na tablicach.

Można za ich pomocą przesyłać funkcje do funkcji (lol jak to zabrzmiało).


(Quentin) #7

Bo to się nazywa Callback...


(Fiołek) #8

@ up : nie zawsze. Callback się nazywa wtedy, kiedy jest wywoływana w odpowiedzi na coś a przecież tak być nie musi. Przykład - funkcja do porównywania, predykat(chodzi mi o, np., trzeci parametr std::remove_if, tłumacz się to jakoś?).


(Ryan) #9

Tak, to tłumaczy się jako predykat. :wink: Zarówno callback jak i predykat w C++ jest de facto wskaźnikiem na funkcję i jasne, można je rozgraniczać na poziomie logicznym, ciężko jest znaleźć argument za tym dlaczego predykat nie mógłby być nazwany callbackiem. :wink:


([alex]) #10

CallBack'i przeważnie kojarzą się z iteracją czegoś.

Ryan , czy nienazywanie wszystkiego jednym słowem jest wystarczającym argumentem?

Właściwie mam sąsiada który na wszystko ma jedno słowo Q-coś-tam.