1 Wskaźniki
2 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
3 Deklaracja zmiennych wskaźnikowych: Pascal C++ nazwa : ^typ; typ * nazwa; Przykład: wskaznik:^integer; char * wsk;
4 @ & Operator uzyskania adresu (referencji): Pascal C++ varPrzykład: var wsk:^integer; a:integer; begin wsk end. char * wsk; char b; wsk = &b;
5 ^ * 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 writeln(a^); end. char * wsk; char b; b = ‘a’; wsk = &b; cout<<*wsk;
6 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.
7 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 );
8 Przykład: var wsk_1 : ^ real ; deklaracje zmiennych wskaźnikowychbegin New( wsk_1 ); przydzielanie pamięci wsk_1^ := 12.34; operacje na zmiennych dynamicznych Dispose( wsk_1 ); zwalnianie pamięci end .
9 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;
10 Przekazywanie argumentów do funkcji przez wskaźniki: język Pascal: type: wsk=^integer; var c,d:integer; function max(a,b:wsk):integer; … język C++ int max (int *a, int *b); int c,d; cout<
11 Koniec