-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path018_str118_pokazivaci.cpp
57 lines (47 loc) · 1.83 KB
/
018_str118_pokazivaci.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
int main(){
int *kazalo; //pokazivač na int
int n=5;
kazalo=&n; //usmjeri pokazivač na n
cout<<"n= "<<n<<endl;
cout<<"*kazalo= "<<*kazalo<<endl; // * se naziva operator dereferencijacije, a & operator adrese
*kazalo+=2;
cout<<"n= "<<n<<endl;
cout<<"*kazalo= "<<*kazalo<<endl;
//kazalo+=5; preusmjerava pokazivač, adresa će se povećati za 5 memorijskih blokova po 4B (za 20)
cout<<kazalo<<" "<<kazalo+5;
int m=3;
kazalo=&m; //pokazivač se može preusmjeriti
//pokazivač se može inicijalizirati prilikom deklaracije (int *kazalo=&n;) ali samo na objekt koji već postoji u memoriji
//Zadatak. Što će se ispisati?
int i=1,j=10;
int *p=&j;
*p *=*p;
i=i+j;
p=&i;
cout<<i<<" "<<j<<" "<<*p<<endl;
/*
- Pokazivači tipa void pokazuju na neodređeni tip podataka, tj. na općenitu memorijsku lokaciju
- Zbog toga ga možemo preusmjeriti na objekt bilo kojeg tipa
- Ipak, ne možemu mu izravno pridružiti vrijednost, npr.*nesvrstan=x je pogreška jer se void ne može dereferencirati */
int a=5;
int *poka=&a;
float b=10.27;
float *pokb=&b;
void *nesvrstan;
nesvrstan=&a; //preusmjeri na a
nesvrstan=pokb; //preusmjeri na b
nesvrstan = &n;
cout<<nesvrstan;
int *x=0; // ili eksplicitnije int *x=NULL;
/*
- Posebna vrijednost koju pokazivač može imati jest nul-pokazivač, koji ne pokazuje nikuda
- Pokazivač na cijeli broj se ne inicijalizira tako da ga se usmjeri na neki broj, već se naznačava da njegova vrijednost nije postavljena
- Primjena? Ako se pokazivač me inicijalizira odmah nakon deklaracije, može mu se dodijeliti vrijednost nul-pokazivača.
Također, funkcije koje kao rezultat vraćaju pokazivač na objekt redovito u slučaju pogreške vraćaju nul-pokazivač pa se preko njega utvrđuje
da li je funkcija uspješno izvršena. */
int* f,*h;
cout<<"\n"<<f<<" "<<h;
return 0;
}