Jakie korzyści daje zastosowanie wskaźnikow na struktury ?

2012-07-14 14:08
Pointer
0

Witam.
Może mi ktoś objaśnić jakie korzyści daje zastosowanie wskaźników na struktury, oprócz tego, że po przekazaniu do funkcji uzyskujemy szybszy dostęp do nich i oszczędzamy pamięc, bo nie przekazujemy ich kopii a tylko adres do nich ?

Pozostało 580 znaków

2012-07-14 14:41
0

Hmm, w przeciwieństwie do referencji widzisz iż wywołanie funkcji z przekazanym pointerem może modyfikować to, na co wskazuje wskaźnik. Poza tym, dynamiczna alokacja pamięci tylko na wskaźnikach, brak wywołania konstruktora kopiującego, modyfikacja obiektu zewnętrznego.


int main( int, char** ) try { throw std::logic_error( myCode() ); }
catch( const std::exception& e ) { puts( e.what() ); } ///:~

Pozostało 580 znaków

2012-07-14 14:43
0

@Pointer po pierwsze to przekazujesz wtedy ORYGINAŁ a nie kopię obiektu i możesz go modyfikowac. Po drugie mozesz wtedy łatwo używać obiektów ze sterty a nie ze stosu.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-07-14 14:50
0
Pointer napisał(a):

szybszy dostęp do nich i oszczędzamy pamięc, bo nie przekazujemy ich kopii a tylko adres do nich ?

To akurat jest wątpliwe. Wskaźnik trzeba wyłuskać (nie cierpię tego słowa) więc dostęp wcale nie jest szybszy. Szybsze powinno być samo przekazanie, bo wskaźnik zazwyczaj jest dużo mniejszy niż cała ta struktura. Kompilatory jednak bardzo się starają, żeby uniknąć niepotrzebnego kopiowania, więc to nie musi być takie oczywiste. (Poczytaj o copy elision)


"(...) otherwise, the behavior is undefined".
To łuskanie następuje jeden raz więc to żaden problem (już większym jest wrzucanie struktury na stos) - jeśli już to problemem może tutaj być page fault przy przekazywaniu struktury na heapie, ale gdybyś to wrzucał na stos to na to samo by wyszło... - msm 2012-07-14 20:11

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0