Wskaźniki
Zmienna wskaźnikowa (wskaźnik) zmienna wskazująca na zmienną danego typu, opisująca położenie innej zmiennej w pamięci, przechowuje adres innej zmiennej Zastosowanie zmiennej wskaźnikowej: dostęp do specjalnych komórek pamięci dynamiczna alokacja pamięci przekazywanie argumentów do funkcji przez wskaźniki praca z tablicami
Deklaracja zmiennych wskaźnikowych: Pascal C++ nazwa : ^typ; typ * nazwa; Przykład: wskaznik:^integer; char * wsk;
@ & Operator uzyskania adresu (referencji): Pascal C++ var Przykład: var wsk:^integer; a:integer; begin wsk := @a; end. char * wsk; char b; wsk = &b;
^ * Operator wyłuskania (dereferencji): operator uzyskania zawartości obszaru identyfikowanego przez adres zawarty w zmiennej wskaźnikowej Pascal C++ ^ * Przykład: var wsk:^integer; a:integer; begin a := 10; wsk := @a; writeln(a^); end. char * wsk; char b; b = ‘a’; wsk = &b; cout<<*wsk;
Dynamiczna alokacja pamięci: Zmienne dynamiczne mają dość ważną cechę: w zależności od potrzeb mogą być tworzone i niszczone w czasie trwania programu . Pozwala to na zaoszczędzenie pamięci, w porównaniu ze zmiennymi statycznymi.
Dynamiczna alokacja pamięci w języku Pascal: Dynamiczny przydział pamięci odbywa się przy użyciu następujących procedur: Przydzielenie pamięci na zmienną zadanego typu: New( zmienna_wskaźnikowa ) ; b) Zwolnienie pamięci przydzielonej za pomocą procedury New Dispose( zmienna_wskaźnikowa ) ; c) Przydzielenie pamięci na ciąg bajtów o zadanej długości GetMem( zm_wsk , ilość_bajtów ) ; d) Zwolnienie pamięci przydzielonej za pomocą procedury GetMem FreeMem( zm_wsk, ilość_bajtów );
Przykład: var wsk_1 : ^ real ; deklaracje zmiennych wskaźnikowych begin New( wsk_1 ); przydzielanie pamięci wsk_1^ := 12.34; operacje na zmiennych dynamicznych Dispose( wsk_1 ); zwalnianie pamięci end .
Dynamiczna alokacja pamięci w języku C++: Operatory new i delete Operator new tworzy obiekt, a operator delete usuwa obiekt z pamięci. Przykłady: char *wsk; wsk = new char; delete wsk; int *wsktab; wsktab = new int[10]; delete [] wsk_tab;
Przekazywanie argumentów do funkcji przez wskaźniki: język Pascal: type: wsk=^integer; var c,d:integer; function max(a,b:wsk):integer; … writeln(max(@c,@d)); język C++ int max (int *a, int *b); int c,d; cout<<max(&c,&d);
Koniec