Koji su pokazatelji u C ++?
Pokazuje na najmoćniji alat u sustavu c ++, koji pomaže programeru da izravno pristupi memoriji i manipulira s njom. Na primjer, kada se kreira varijabla, posao prevodilaca je dodijeliti memoriju za spremanje vrijednosti varijable. I ta se vrijednost preuzima pomoću imena varijable dodijeljene podacima. C ++ ima kompatibilnost za pohranjivanje i preuzimanje podataka iz memorije koja se odnosi na adresu memorijske lokacije na kojoj su podaci pohranjeni. C ++ čak i izvršava pokazivače na pokazivaču.
Sintaksa
Opći format pokazivačke deklaracije je:
Data_type * pointer -variable-name
Imajte na umu da varijabli pokazivača treba prethoditi zvjezdicom (*)
Primjer: int * xptr;
Promjenjiva xptr je pokazivač na cijeli broj. Općenito, pokazivačke varijable mogu upućivati na cjelobrojne varijable, znakovne varijable, nizove, datoteke, funkcije.
Zašto su nam potrebni pokazivači na C ++?
Dinamička dodjela memorije pojednostavljena je na C ++ pomoću pokazivača, a najistaknutiji značaj pokazatelja je u tome što su mnogo učinkovitiji u rukovanju različitim vrstama podataka. Oni povećavaju brzinu izvršenja kada funkcija vrati jednu vrijednost i također pružaju ruku pristupu varijabli definiranoj izvan funkcije. Najčešća upotreba uključuje upravljanje podacima i pristup funkcijama članova klase.
Kako stvoriti pokazivače u C ++?
Evo sljedećih koraka za stvaranje pokazivača u C ++
Korak br. 1 - Inicijalizacija pokazatelja
Preporučljivo je inicijalizirati varijable pointera čim ih se deklarira. Budući da varijable pokazivača pohranjuju adrese, mogu adresirati bilo koji dio memorije.
int *a; // pointer to an integer
double *da; // pointer to a double
float *fa; // pointer to afloat
char *ch // character pointer
Razmotrimo slijedeći primjer:
int p, * pi; // Ova izjava upućuje prevodiocu da rezervira prostor za varijablu p u memoriji kako bi zadržala cijelu vrijednost.
pi = A; // Dodeli adresu cijele varijable p varijabli pokazivača. Na primjer, ako je adresa p 4581, tada će vrijednost u * pi biti jednaka 4581.
Korak # 2 - Poništavanje pokazivača
Ovdje je varijabla pokazivača dopuštena da pokazuje bilo koju vrstu podataka, a ova se vrsta koristi u prolaznim pokazivačima kako bi funkcionirali koji rade neovisno o vrsti podataka na koju je upućeno.
Sintaksa: void * varijabla pointera;
Primjer:
#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )
Izlaz:
$ g ++ -o glavnom * .cpp
$ glavna
vrijednost označena s iv je 3
Adresa x je 0x7ffefbbee6d4
vrijednost označena s fv je 45, 2
Adresa f je 0x7ffefbbee6d0
Adresa x je 0x7ffefbbee6d4
adresa f je 0x7ffefbbee6d0
Korak # 3 - Pokazivači aritmetičkih operacija u C ++
Aritmetika pokazivača izvodi se nizovima. Sljedeće se operacije mogu izvoditi na pokazivačima. Oni su:
- Povećanje (++)
- Odredba (-)
- Dodatak pokazivača
- Oduzimanje pokazivača
Kad na pokazivač dodamo 1, on određuje dodavanje veličine pokazivača na.
Program u nastavku navodi aritmetiku pokazivača koja djeluje dok ne dobije na kraju matrice.
#include
#include
using namespace std;
void pointerarithmetic(int a(), int size)
(
int *e, *t; //Declaring two int pointers variables
e = a; //assigning e to point the arrays initial element a(0) t = a + size; // assigning variable t to the array last element
while(e != t)
(
cout << *e << endl; //displays the e
e++; // incrementing ( next element)
)
)
int main()
(
int a() = (2, 4, 6, 8, 10, 12, 14, 16, 18, 20);
pointerarithmetic (a, 20);
return 0;
)
Izlaz:
$ g ++ -o glavnom * .cpp
$ glavna
2
4
6
8
10
12
14
16
18
20
0
0
4196480
0
-1743362854
32.686
1
0
153860328
32.766
Korak # 4 - Pointer na pokazivač
plutati ** fpp;
Označava dvije razine pokazivača ( Više indirekcija ). To je varijabla koja upućuje na drugi pokazivač i dalje upućuje na objekt naveden u memorijskoj lokaciji. Na primjer, fpp je plutajući pokazivač koji trenutno upućuje na memorijsku adresu 2001, veličina floata je 8 bajta, zatim prema
FPP ++;
označava fpp koji upućuje na adresu 2009. Slično tome, kada se varijabla smanji za 1, to će ukazati na prethodno mjesto osnovnog tipa na adresi 1993.
Korak # 5 - Pokazivač na funkcije
Kad se pokazivači prenesu na funkciju kao argumenti, podatkovne stavke povezane s varijablom ovih pokazivača mijenjaju se u funkciji, a zatim se vraćaju u pozivni program, promjene će se zadržati u programu poziva. Kada se pokazivač prenese kao parametar, pojedine stavke podataka globalno se mijenjaju iz pozvane funkcije. Pokazivač se daje referencom. Funkcije se u pokazivačima mogu izvoditi na različite načine:
- funkcija koja se poziva prelazeći referencu
- Funkcija koja se poziva prelaskom pokazivača
Funkcija koja se poziva prelazeći referencu
Pri tome se adresa prenosi kao argument umjesto vrijednosti.
Primjer:
#include
using namespace std;
void changefn(int*, int*);
int main()
(
int n = 5, m = 6;
cout << "Before change" << endl;
cout << "n = " << n << endl;
cout << "m = " << m << endl;
changefn(&n, &m);
cout << "\nAfter change" << endl;
cout << "n = " << n << endl;
cout << "m = " << m << endl;
return 0;
)
void changefn(int* x1, int* x2) (
int s1;
s1 = *x1;
*x1 = *x2;
*x2 = s1;
)
Izlaz:
$ g ++ -o glavnom * .cpp
$ glavna
Prije promjene
n = 5
m = 6
Nakon promjene
n = 6
m = 5
Zaključak
Ovaj je članak trebao na jednostavan način osvježiti znanje o tome kako koristiti pokazivače na C ++ i njihove osnovne teme na jednostavan način. Pointer je također poznat kao lokator smanjuje iskaz koda za veće performanse. Pokazivači igraju vitalnu ulogu u implementaciji podataka kao što su povezani popis i programiranje na razini sustava. Oni su najpoželjniji jezik u ugrađenim sustavima jer su dobar način pristupa izravno memoriji pomoću pokazivača.
Preporučeni članci
Ovo je vodič za Pokaze u C ++. Ovdje smo razgovarali o tome kako stvoriti pokazivače u C ++ s danim primjerima i izlazom i zašto nam trebaju. Možete pogledati i sljedeći tečaj za analizu podataka da biste saznali više
- Pokazivači u Pythonu
- Vrste podataka u C
- Nizi u C ++
- Zvjezdani uzorci u c ++
- Kako Pointers rade u C #?