Kakšni so kazalci v C ++?

Nakaže najzmogljivejše orodje v sistemu c ++, ki pomaga programerju do neposrednega dostopa do pomnilnika in manipulacije z njim. Na primer, ko je spremenljivka ustvarjena, je naloga prevajalnika, da dodeli pomnilnik, da shrani vrednost spremenljivke. In ta vrednost je pridobljena z imenom spremenljivke, dodeljene podatkom. C ++ ima združljivost za shranjevanje in pridobivanje podatkov iz pomnilnika, ki se nanašajo na naslov pomnilniškega mesta, na katerem so podatki shranjeni. C ++ celo izvaja kazalce na kazalcu.

Sintaksa

Splošna oblika izjave kazalca je:

Data_type * pointer -variable-name

Upoštevajte, da mora biti pred spremenljivko kazalca zvezdica z zvezdico (*)

Primer: int * xptr;

Spremenljivka xptr je kazalec na celo število. Na splošno lahko kazalci spremenljivke kažejo na celoštevilčne spremenljivke, znakovne spremenljivke, matrike, datoteke, funkcije.

Zakaj potrebujemo kazalce v C ++?

Dinamična dodelitev pomnilnika je v C ++ enostavna z uporabo kazalcev, najpomembnejši pomen kazalcev je, da so veliko učinkovitejši pri ravnanju z različnimi vrstami podatkov. Povečajo hitrost izvrševanja, ko funkcija vrne eno vrednost, in tudi roko pri dostopu do spremenljivke, definirane zunaj funkcije. Najpogostejša uporaba vključuje upravljanje podatkov in dostop do funkcij članov razreda.

Kako ustvariti kazalce v C ++?

Tu so naslednji koraki za ustvarjanje kazalcev v C ++

1. korak - Inicializacija kazalcev

Priporočljivo je, da takoj spremenite kazalnike spremenljivk. Ker spremenljivke kazalca hranijo naslove, lahko naslovijo kateri koli del pomnilnika.

int *a; // pointer to an integer
double *da; // pointer to a double
float *fa; // pointer to afloat
char *ch // character pointer

Razmislite o naslednjem primeru:

int p, * pi; // Ta stavek naroči prevajalniku, naj si rezervira prostor za spremenljivko p v pomnilniku, da vsebuje celoštevilčno vrednost.

pi = & a; // Dodeli naslov celoštevilčne spremenljivke p spremenljivki kazalca. Na primer, če je naslov p 4545, bo vrednost v * pi enaka 4581.

Korak # 2 - Kazalec ničen

Tu lahko spremenljivka kazalca kaže na katero koli vrsto podatkov, ta tip pa se uporablja pri podajanju kazalcev za delovanje, ki deluje neodvisno od vrste podatkov, na katero je opozorjeno.

Sintaksa: void * spremenljivka kazalca;

Primer:

#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 "< )

Izhod:

$ g ++ -o glavni * .cpp
$ glavni
vrednost, ki jo kaže iv, je 3
Naslov x je 0x7ffefbbee6d4
vrednost s fv je 45, 2
Naslov f je 0x7ffefbbee6d0
Naslov x je 0x7ffefbbee6d4

naslov f je 0x7ffefbbee6d0

3. korak - kazalniki Aritmetične operacije v C ++

Aritmetika kazalca se izvaja z nizi. Naslednje operacije se lahko izvajajo na kazalcih. To so:

  • Povišanje (++)
  • Zmanjšanje (-)
  • Dodatek kazalca
  • Odštevanje kazalcev

Ko dodamo 1 na kazalec, podaja dodajanje velikosti kazalca, ki kaže na.

Spodnji program določa aritmetiko kazalca, ki deluje, dokler ne pride na koncu matrike.

#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;
)

Izhod:

$ g ++ -o glavni * .cpp
$ glavni
2

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32686

1

0

153860328

32766

4. korak - Kazalec na kazalec

float ** fpp;

Označuje dve ravni kazalcev ( Več indirektnih ). To je spremenljivka, ki kaže na drug kazalec in nadalje kaže na predmet, ki je določen na pomnilniškem mestu. Na primer, fpp je float kazalec, ki trenutno kaže na spominski naslov 2001, velikost float je 8 bajtov, nato z

fpp ++;

označuje fpp, ki kaže na naslov 2009. Podobno, ko spremenljivko zmanjšamo za 1, bo kazala na prejšnjo lokacijo svojega osnovnega tipa na naslovu 1993.

Korak # 5 - Kazalec na funkcije

Ko se kazalci prenesejo na funkcijo kot argumenti, se podatki, povezani s spremenljivko teh kazalcev, spremenijo znotraj funkcije in se nato vrnejo v klicni program, spremembe se obdržijo v klicnem programu. Ko se kazalec posreduje kot parameter, se zadevne podatkovne postavke globalno spremenijo znotraj klicane funkcije. Kazalec se poda kot referenca. Funkcije se lahko v kazalcih izvajajo na različne načine:

  1. funkcija, ki jo prikliče s prenosom reference
  2. Funkcija, ki jo prikličete s prehodom kazalca

Funkcija, ki jo prikličete s prenosom reference

Pri tem se naslov posreduje kot argument namesto vrednosti.

Primer:

#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;
)

Izhod:

$ g ++ -o glavni * .cpp
$ glavni
Pred spremembo

n = 5

m = 6

Po spremembi

n = 6

m = 5

Zaključek

Ta članek je na preprost način osvežil znanje o uporabi kazalcev v C ++ in njihovih osnovnih temah s primerom. Kazalnik je znan tudi kot lokator zmanjšuje stavek kode za večje zmogljivosti. Kazalniki igrajo ključno vlogo pri izvajanju struktur podatkov, kot so povezani seznam in programiranje na sistemski ravni. V vgrajenih sistemih so najbolj zaželen jezik, saj so dober način za dostop do pomnilnika neposredno s kazalci.

Priporočeni članki

To je vodnik po kazalcih v C ++. Tukaj razpravljamo, kako ustvariti kazalce v C ++ z danimi primeri in izhodom ter zakaj ga potrebujemo. Za več informacij si lahko ogledate tudi naslednji tečaj analize podatkov

  1. Kazalniki v Pythonu
  2. Vrste podatkov na C
  3. Nizi v C ++
  4. Zvezdni vzorci v c ++
  5. Kako delujejo kazalci v C #?