Wskazniki
Wykład SI 16.11.2009
Wskazniki są to zmienne przechowujące adres innej zmiennej.
Wskazniki używane są z dwóch powodów:
1. Niektórych algorytmów nie można zapisać bez użycia wskazników, zastosowanie wsk, bardzo często
prowadzi do uzyskania bardziej efektywnego kodu
2. Wskaznik umożliwia pośredni dostęp do wartości zmiennej, której adres zawiera
Operator wyłuskania * - jest zwany także operatorom dostępu pośredniego albo de referencją
*identyfikator_zmiennej;
Operator * znajdujący się przed zmienna oznacza, że zostanie odczytana wartość przechowywana pod adresem
znajdującym się w zmiennej
Operator adresu służy do pozyskiwania adresy zmiennej
&identyfikator_zmiennej;
float a,b, *p;
a=10.1;
p=&a;
b=*p+1;
printf ( b = %f , b);
_getch ();
return 0;
Tablice jednowymiarowe:
Tablica
Typ identyfikator[liczba _elementow]; duble tablica[10];
Element 0
Tablice można podczas deklaracji zainicjować wartościami
Element 1
int b[4]= {21,44,72,34};
Element 2
Identyfikator [num elementu]
&
int b[4]= {21,44,72,34};
printf ( %i , b[2]);
&a = 0x1000
b[3]=15; // zamiast 34 wpisana zostaje 15
A[0][0] = -2,5
&a[0][0] = 0x1000
Tablice dwuwymiarowe:
Typ identyfikator [liczba wierszy] [liczba kolumn];
int b[3][4]= {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
Identyfikator [numer wirsza] [numer kolumny]
int b[3][4]= {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
printf ( %i , b[2][1]);
b[1][1] = 15;
Funkcja malloc
Rezerwuje w pamięci zadana przed użytkownika liczbę bajtów
void*malloc (liczba bajtów );
Zwraca wskaznik do zarezerwowanego obszaru lub 0 gdy żądanie rezerwacji nie może być spełnione.
Funkcja calloc
Rezerwuje w pamięci dla zadanej przez użytkownika liczby elementów
void *calloc (liczba elementów, rozmiar elementu);
1 | S t r o n a
Zwraca wskaznik do zarezerwowanego obszaru lub 0 gdy żądanie rezerwacji nie może być spełnione.
Funkcja free
Zwalnia zarezerwowany Obsza pamięci dzięki czemu może być on wykorzystany do innych celów
void free (wskaznik do bloku pamięci);
Operator sizeof
Zwalnia liczbę bajtów zajmowanych w pamięci przez zmienną
sizeof (zmienna lub jej typ);
Parametrem funkcji może być również typ zmiennej
Przykład
double *p = 0;
p = (double *)malloc(10); // błędna alokacja pamięci 10 pozwala na jedną liczbę typu double
p = (double *)calloc (10, sizeof (double)); // pozwala na przechowanie 10 liczb typu double
&
&
free (p); // pamięć niepotrzebna wiec zwalniamy
Przykład
float *a=0;
Float *a = NULL;
a=(float*)calloc(4, sizeof (float)); // rezerwacja dla 4 elementów typu float
A=(float*)calloc(4, sizeof (float));
*a = -2,5;
A[0] = -2,5;
*(a+1) = 3,14;
A[1] = 3,14; &
*(a+2) = 21,9;
*(a+3)= 5,5;
free (a); // zwalniamy pamięć
Tablica dwuwymiarowa
float **adr;
int i;
adr = (float **)calloc (1w, sizeod (float*));
for (i=0; i<1w;++i)
{
*(adr+i)= (float*)calloc (1k,sizeof (float) );
// adr[i]= (float*)calloc (1k,sizeof (float) );
}
*(*(adr+0)+1)=3,14; // adr [0] [1] = 3,14;
for (i=0; i<1w; ++i)
{
free (*(adr+i)) ; // free (adr [i]); zwalnia wszystkie tablice po kolei
}
free (adr); //zwolnij od adr
_getch
2 | S t r o n a
Operator new
Rezerwuje w pamięci dla zadanej przez użytkownika liczby elementów
Zmienna wskaznikowa = new typ elementy;
Operator delete
Zwalnia zarezerwowany obszar pamięci dzięki czemu może być on wykorzystany do innych celów
Delete identyfikator_zmiennej_wskaznikowej;
Delete
Delete
Delete
Jeżeli zmienna wskaznikowa wskazuje na tablicę należy użyć [] (sygnalizują one kompilatorowi ze usuwana jest
tablica )
delete
delete [] identyfikator_zmiennej_wskaznikowej; // [] usuwana jest tablica
delete
delete
Rezerwowanie pamięci identyfikator = New typ elementu [liczba elementow] ;
Przykład
float *p = 0;
p = new float; // p staje się New float
*p = 10.1; // p[0] = 10.1
delete p;
Tablica jednowymiarowa
int n,i;
float *p = 0;
std::cout << n= ;
std::cin >> n;
p=new float[n];
for (i=0; i
for (i=0; idelete [] p;
_getch();
return 0;
}
Tablica dwuwymiarowa
double **tablica;
int i.n.m;
std::cout << m= ;
std::cin >> m;
std:: cout << n= ;
std::cin >> n;
tablica = new double *[m]
for (i=0; ifor (i=0; idelete [] tablica;
_getch();
return 0;
}
3 | S t r o n a
Wyszukiwarka
Podobne podstrony:
Wykład 11 16 12 12
Analiza Wykład 11 (16 12 10) ogarnijtemat com
Wykład 11 15 16 Agnieszka Popławska Marketing
Wykład 11 stolarka okienna i drzwiowa
WYKŁAD 11
wyklad 11 psychosomatyka
PLC mgr wyklad 11 algorytmy
CHEMIA dla IBM Wyklad 8) 11 2013
Wyklad 11
Wyklad 11 stacj Genetyka i biotechnologie lesne
Stat wyklad2 11 na notatki
(Uzupełniający komentarz do wykładu 11)
wyklad10 11 ME1 EiT
WYKŁAD 11 2
więcej podobnych podstron