int *wsk;
int i;
wsk = &i;
adres zmiennej i to &i np. FFF4
wsk
wsk = &i; i=5;
wsk
printf (″ %p %i″, wsk, *wsk); printf (″ %p″, &i);
FFF4 5 FFF4
tab (&tab[0]) - adres 0 elementu tablicy
&tab[1] - adres 1 elementu tablicy
&tab[2] - adres 2 elementu tablicy
&tab[3] - adres 3 elementu tablicy
wartości: |
-1 |
-20 |
3 |
5 |
tab
&tab[0]
tab + 1
&tab[1]
tab + 2
&tab[2]
tab + 3
&tab[3]
int *dane;
funkcja malloc zwraca adres do zarezerwowoanej pamięci
dane = ( int * ) malloc ( sizeof (int) );
*dane=9;
int *dane;
int rozmiar;
scanf (“%d”, & rozmiar);
dane = ( int * ) malloc ( rozmiar * sizeof (int) );
utworzona tablica:
int dane[rozmiar];
int i;
int *wsk;
int **p;
adres zmiennej wsk to &wsk adres zmiennej i to &i
np.: FFDE (gdzie wsk w pamięci) np.:FFF4 (adres i w pamięci)
wsk i
wsk = &i; i=5;
wsk *wsk = 5;
p = &wsk;
p -> FFDE
*p -> FFF4
*(*p) -> *(FFF4) -> 5
*(*p) -> *(FFF4) -> 5
int **p;
p = ( int ** ) malloc sizeof (int *) );
*p
**p **p = 5;
*p = ( int * ) malloc sizeof (int ) );
p -> FFAD
*p -> FEAA
*(*p) -> *(* FFAD) -> *( FEAA) -> 5
float tab[3][2]={1,2, 3,4, 10,30};
float **kopia;
kopia = ( float ** ) malloc ( 3 * sizeof (float *) );
for (i=0; i<3; i++)
kopia [i] = ( float *) malloc ( 2 * sizeof (float ) );
for (i=0; i<3; i++)
for (j=0; j<2; j++)
kopia [i] [j] = tab [i] [j];
i jest typu int
przechowuje adres zmiennej typu int
p
FFF4
przechowuje adres do obiektu typu int
i jest typu int
5
FFDE
adres do obiektu, który przechowuje adres do zmiennej typu int
FFF4
float
rozmiar
float
kopia[0][0]
kopia[0][1]
p
i
i
i
adres
int
dane[0]
5
float
float
float
adres
kopia[0]
adres
kopia[1]
adres
kopia[2]
adres
float
int
dane[1]
int
dane[2]
adres
0xFEAA
adres do zmiennej, która przechowuje adres do zmiennej typu int
tab[0] -> *(tab)
tab[1] -> *(tab+1)
tab[2] -> *(tab+2)
tab[3] -> *(tab+3)
adres początku obszaru zarezerwowanego dla tablicy
p
int 5
adres do adresu
0xFFAD
adres do int
0xFEAA
0xFFAD
kopia[2][0]
kopia[2][1]
9