Wat zijn de aanwijzers in C ++?

Wijst op de krachtigste tool in c ++, het helpt de programmeur om het geheugen rechtstreeks te benaderen en te manipuleren. Wanneer bijvoorbeeld een variabele wordt gemaakt, is het de taak van de compiler om geheugentoewijzing te doen om de waarde van de variabele op te slaan. En deze waarde wordt opgehaald met behulp van de variabelenaam die aan de gegevens is toegewezen. C ++ heeft de compatibiliteit om de gegevens uit het geheugen op te slaan en op te halen met verwijzing naar het adres van de geheugenlocatie waarop de gegevens zijn opgeslagen. C ++ voert zelfs pointers uit op een pointer.

Syntaxis

Het algemene formaat van de pointer-aangifte is:

Data_type * pointer -variable-name

Merk op dat de pointervariabele moet worden voorafgegaan door een asterisk (*)

Voorbeeld: int * xptr;

De variabele xptr is een pointer naar een geheel getal. Over het algemeen kunnen pointervariabelen verwijzen naar gehele variabelen, karaktervariabelen, arrays, bestanden, functies.

Waarom hebben we Pointers nodig in C ++?

Dynamische geheugentoewijzing is eenvoudig gemaakt in C ++ met behulp van pointers, het meest prominente belang van pointers is dat ze veel efficiënt zijn in het omgaan met de verschillende gegevenstypen. Ze verhogen de uitvoeringssnelheid wanneer de functie één waarde retourneert en geven ook toegang tot een variabele die buiten de functie is gedefinieerd. Het meest voorkomende gebruik omvat gegevensbeheer en toegang tot functies van klassenleden.

Hoe Pointers maken in C ++?

Hier zijn de volgende stappen om pointers in C ++ te maken

Stap # 1 - Initialisatie van verwijzingen

Het is raadzaam om pointervariabelen te initialiseren, zodra deze worden gedeclareerd. Omdat pointervariabelen adressen opslaan, kunnen ze elk deel van het geheugen adresseren.

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

Overweeg het volgende voorbeeld:

int p, * pi; // Deze instructie geeft de compiler opdracht een ruimte te reserveren voor de variabele p in het geheugen om een ​​geheel getal te bevatten.

pi = & a; // Wijst het adres van de gehele variabele p toe aan de pointervariabele. Als het adres van p bijvoorbeeld 4581 is, is de waarde in * pi gelijk aan 4581.

Stap # 2 - Aanwijzer ongeldig

Hier mag de pointervariabele elk gegevenstype aanwijzen en dit type wordt gebruikt in passerende wijzers om te werken die onafhankelijk werken van het gegevenstype waarnaar wordt verwezen.

Syntaxis: void * pointer variable;

Voorbeeld:

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

Output:

$ g ++ -o main * .cpp
$ main
de waarde aangeduid met iv is 3
Het adres van x is 0x7ffefbbee6d4
de waarde aangeduid door fv is 45.2
Het adres van f is 0x7ffefbbee6d0
Het adres van x is 0x7ffefbbee6d4

het adres van f is 0x7ffefbbee6d0

Stap # 3 - Pointers rekenkundige bewerkingen in C ++

Rekenkundige aanwijzer wordt uitgevoerd met arrays. De volgende bewerkingen kunnen op wijzers worden uitgevoerd. Zij zijn:

  • Verhogen (++)
  • Daling (-)
  • Aanwijzer toevoegen
  • Aanwijzer aftrekken

Wanneer we 1 aan de aanwijzer toevoegen, geeft dit aan dat de grootte van de aanwijzer naar moet worden toegevoegd.

Het onderstaande programma geeft aan dat wijzer werkt totdat het aan het einde van de array komt.

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

Output:

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

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32686

1

0

153860328

32766

Stap # 4 - Aanwijzer naar aanwijzer

float ** fpp;

Het geeft twee niveaus van aanwijzers aan ( meerdere aanwijzingen ). Het is een variabele die naar een andere aanwijzer verwijst en verder verwijst naar een object dat op een geheugenlocatie is opgegeven. Bijvoorbeeld, fpp is een float pointer die momenteel verwijst naar geheugenadres 2001, de grootte van de float is 8 bytes, daarna door

FPP ++;

geeft fpp aan dat verwijst naar adres 2009. Op dezelfde manier zal, wanneer de variabele met 1 wordt verlaagd, deze naar de vorige locatie van het basistype op adres 1993 wijzen.

Stap # 5 - Aanwijzer naar functies

Wanneer pointers als argumenten aan een functie worden doorgegeven, worden de gegevensitems die zijn gekoppeld aan de variabele van deze pointers binnen de functie gewijzigd en vervolgens teruggestuurd naar het aanroepende programma. De wijzigingen blijven behouden in het aanroepende programma. Wanneer een pointer als parameter wordt doorgegeven, worden de respectieve gegevensitems globaal gewijzigd vanuit de opgeroepen functie. De aanwijzer wordt doorgegeven door verwijzing. Functies kunnen op verschillende manieren in wijzers worden uitgevoerd:

  1. de functie wordt geactiveerd door de verwijzing door te geven
  2. De functie wordt geactiveerd door een aanwijzer te passeren

De functie is geactiveerd door de verwijzing door te geven

Hierin wordt het adres doorgegeven als een argument in plaats van waarden.

Voorbeeld:

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

Output:

$ g ++ -o main * .cpp
$ main
Voor verandering

n = 5

m = 6

Na wisselgeld

n = 6

m = 5

Conclusie

Dit artikel was bedoeld om de kennis over het gebruik van pointers in C ++ en hun basisonderwerpen op een eenvoudige manier te vernieuwen met een voorbeeld. Pointer staat ook bekend als locator vermindert de codeverklaring voor betere prestaties. Aanwijzers spelen een cruciale rol bij het implementeren van gegevensstructuren zoals gekoppelde lijst en programmering op systeemniveau. Ze zijn de voorkeurstaal in ingebedde systemen omdat ze een goede manier zijn om rechtstreeks toegang tot het geheugen te krijgen met behulp van pointers.

Aanbevolen artikelen

Dit is een gids voor Pointers in C ++. Hier bespreken we hoe Pointers te maken in C ++ met de gegeven voorbeelden en uitvoer en waarom hebben we het nodig. U kunt ook de volgende cursus voor gegevensanalyse raadplegen voor meer informatie

  1. Aanwijzingen in Python
  2. Gegevenstypen in C
  3. Arrays in C ++
  4. Sterpatronen in c ++
  5. Hoe werkt Pointers in C #?