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:

  1. funkcija koja se poziva prelazeći referencu
  2. 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

  1. Pokazivači u Pythonu
  2. Vrste podataka u C
  3. Nizi u C ++
  4. Zvjezdani uzorci u c ++
  5. Kako Pointers rade u C #?

Kategorija: