Vad är pekarna i C ++?

Pekar på det mest kraftfulla verktyget i c ++, det hjälper programmeraren att komma åt och manipulera minnet direkt. Till exempel, när en variabel skapas, är kompilatorns jobb att göra minnesallokering för att lagra variabelns värde. Och detta värde hämtas med variabelnamnet tilldelat data. C ++ har kompatibilitet för att lagra och hämta data från minnet med hänvisning till adressen till minnesplatsen där data lagras. C ++ utför till och med pekare på en pekare.

Syntax

Det allmänna formatet för pekardeklarationen är:

Data_type * pointer -variable-name

Observera att pekvariabeln bör föregås av en asterisk (*)

Exempel: int * xptr;

Variabeln xptr är en pekare till ett heltal. Generellt kan pekvariablerna peka på heltalvariabler, teckenvariabler, matriser, filer, funktioner.

Varför behöver vi Pekare i C ++?

Dynamisk minnesallokering görs enkel i C ++ med hjälp av pekare, den mest framträdande vikten av pekare är att de är mycket effektiva för att hantera olika datatyper. De ökar exekveringshastigheten när funktionen returnerar ett värde och ger också hand om åtkomst till en variabel definierad utanför funktionen. Den vanligaste användningen inkluderar datahantering och åtkomst till klassmedlemfunktioner.

Hur skapar jag pekare i C ++?

Här är följande steg för att skapa pekare i C ++

Steg # 1 - Initiering av pekare

Det rekommenderas att initiera pekarvariabler så snart de deklareras. Eftersom pekarvariabler lagrar adresser kan de adressera vilken del av minnet som helst.

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

Tänk på följande exempel:

int p, * pi; // Detta uttalande instruerar kompilatorn att reservera ett utrymme för variabeln p i minnet för att hålla ett heltal.

pi = & a; // Tilldelar adressen för heltalvariabeln p till pekvariabeln. Till exempel, om adressen till p är 4581, kommer värdet i * pi att vara lika med 4581.

Steg # 2 - Pekaren ogiltig

Här tillåts pekvariabeln att peka vilken datatyp som helst och denna typ används för att vidarebefordra pekare för att fungera oberoende av den datatyp som det pekas på.

Syntax: void * pekarvariabel;

Exempel:

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

Produktion:

$ g ++ -o huvud * .cpp
$ huvudsakliga
värdet pekade med iv är 3
Adressen till x är 0x7ffefbbee6d4
värdet pekat på fv är 45, 2
Adressen till f är 0x7ffefbbee6d0
Adressen till x är 0x7ffefbbee6d4

adressen till f är 0x7ffefbbee6d0

Steg # 3 - Pekare aritmetiska operationer i C ++

Pekare aritmetik utförs med matriser. Följande operationer kan utföras på pekare. Dom är:

  • Ökning (++)
  • Dekrement (-)
  • Pekertillägg
  • Pointer subtraktion

När vi lägger till 1 till pekaren anger den att lägga till storleken på pekaren som pekar på.

Nedanstående program specificerar pekarearmetik att det fungerar tills det kommer i slutet av matrisen.

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

Produktion:

$ g ++ -o huvud * .cpp
$ huvudsakliga
2

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32.686

1

0

153860328

32766

Steg 4 - Pekare till pekare

flottör ** fpp;

Den anger två nivåer av pekare ( flera indirektioner ). Det är en variabel som pekar på en annan pekare vidare pekar på ett objekt som anges på en minnesplats. Till exempel, fpp vara en flottörpekare som för närvarande pekar på minnesadress 2001, storleken på flottören är 8 byte, sedan av

FPP ++;

indikerar fpp som pekar på adress 2009. På samma sätt, när variabeln minskas med 1, kommer den att peka på den tidigare platsen för dess bastyp på adress 1993.

Steg 5 - Pekare till funktioner

När pekare överförs till en funktion som argument, ändras dataelementen som är associerade med dessa pekars variabel inom funktionen och returneras sedan till det samtalande programmet, kommer ändringarna att behållas i det samtalande programmet. När en pekare skickas som en parameter ändras respektive dataobjekt globalt från den kallade funktionen. Pekaren skickas som referens. Funktioner kan utföras i pekare på olika sätt:

  1. funktionen åberopas genom att lämna referensen
  2. Funktionen åberopas genom att skicka en pekare

Funktionen åberopas genom att lämna referensen

I detta skickas adressen som ett argument i stället för värden.

Exempel:

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

Produktion:

$ g ++ -o huvud * .cpp
$ huvudsakliga
Innan ändring

n = 5

m = 6

Efter förändring

n = 6

m = 5

Slutsats

Denna artikel syftar till att uppdatera kunskapen om hur man använder pekare i C ++ och deras grundläggande ämnen på ett enkelt sätt med ett exempel. Pekaren är också känd som locator reducerar kodmeddelandet för högre prestanda. Pekare spelar en viktig roll vid implementering av datastrukturer som länkad lista och programmering på systemnivå. De är det mest föredragna språket i inbäddade system eftersom de är ett bra sätt att komma åt minnet direkt med hjälp av pekare.

Rekommenderade artiklar

Detta är en guide till Pekare i C ++. Här diskuterar vi hur man skapar pekare i C ++ med de givna exemplen och output och varför behöver vi det. Du kan också titta på följande dataanalyskurs för att lära dig mer

  1. Pekare i Python
  2. Datatyper i C
  3. Matriser i C ++
  4. Stjärnmönster i c ++
  5. Hur fungerar Pekare i C #?

Kategori: