Melyek a C ++ mutatói?

Mutatja a c ++ legerősebb eszközét, segít a programozónak a memória közvetlen elérésében és kezelésében. Például egy változó létrehozásakor a fordító feladata a memória allokálása a változó értékének tárolására. És ezt az értéket az adatokhoz rendelt változónév alapján állítják elő. A C ++ kompatibilis azzal, hogy tárolja és begyűjti az adatokat a memóriából arra a memóriahely címére hivatkozva, amelyben az adatokat tárolja. A C ++ még mutatókat is végrehajthat egy mutatón.

Szintaxis

A mutatónyilatkozat általános formátuma:

Data_type * pointer -variable-name

Vegye figyelembe, hogy a mutatóváltozót csillag (*) előzi meg

Példa: int * xptr;

Az xptr változó egy egész szám mutatója. Általában a mutatóváltozók egész számokra, karakterváltozókra, tömbökre, fájlokra, függvényekre mutathatnak.

Miért van szükség mutatókra a C ++-ban?

A dinamikus memóriaelosztás egyszerűvé válik a C ++ alkalmazásban a mutatók használatával, a mutatók legfontosabb jelentőségét az jelenti, hogy sokkal hatékonyabban kezelik a különböző adattípusokat. Növelik a végrehajtási sebességet, amikor a függvény egy értéket ad vissza, és kézhez adják a függvényen kívül definiált változó elérését is. A leggyakoribb használat az adatkezelés és az osztálytag funkcióinak elérése.

Hogyan hozhatunk létre mutatókat a C ++ programban?

A következő lépésekkel hozhat létre mutatókat a C ++ rendszerben

1. lépés - A mutatók inicializálása

Javasolt a mutatóváltozókat inicializálni, amint azok deklarálásra kerülnek. Mivel a mutatóváltozók tárolják a címeket, a memória bármelyik részét képesek kezelni.

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

Vegyük figyelembe a következő példát:

int p, * pi; // Ez az utasítás utasítja a fordítót, hogy hagyjon helyet a memóriában lévő p változó számára egy egész érték tartására.

pi = & a; // A p egész szám változó címét rendeli a mutató változóhoz. Például, ha p címe 4581, akkor a * pi értéke 4581 lesz.

2. lépés - A mutató érvénytelen

Itt a mutatóváltozó bármilyen adattípust megmutathat, és ezt a típust a mutatók átadására használják, hogy a megjelölt adattípustól függetlenül működjenek.

Szintaxis: void * mutató változó;

Példa:

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

Kimenet:

$ g ++ -o main * .cpp
$ fő
az iv által jelzett érték 3
X címe 0x7ffefbbee6d4
az fv által jelzett érték 45, 2
F címe 0x7ffefbbee6d0
X címe 0x7ffefbbee6d4

f címe 0x7ffefbbee6d0

3. lépés - Mutatók aritmetikai műveletei C ++-ban

A mutató aritmetikáját tömbökkel hajtják végre. Az alábbi műveletek végrehajthatók a mutatókon. Ők:

  • Növekedés (++)
  • Rendelet (-)
  • Mutató hozzáadása
  • Mutató kivonás

Ha az 1-et hozzáadjuk a mutatóhoz, akkor megjelöli a mutatóra mutató méret méretét.

Az alábbi program meghatározza a mutató számtani működését, amíg addig működik, amíg a tömb végére nem kerül.

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

Kimenet:

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

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32686

1

0

153860328

32766

4. lépés - Mutató a mutatóhoz

úszó ** fpp;

A mutatók két szintjét jelöli ( többszörös indirekciók ). Ez egy változó, amely egy másik mutatóra mutat, ráadásul a memóriahelyen megadott objektumra mutat. Például, ha az fpp egy úszó mutató, amely jelenleg a 2001-es memóriacímre mutat, az úszó mérete 8 byte, majd

FPP ++;

Hasonlóképpen, ha a változót 1-gyel csökkentik, akkor az alaptípus korábbi helyére mutat, az 1993-as címen.

5. lépés - A funkciók mutatója

Amikor a mutatókat argumentumként továbbítják egy funkcióhoz, az ezekkel a mutatók változójával társított adatelemeket megváltoztatják a függvényen belül, majd visszatérnek a hívó programhoz, a változtatások megmaradnak a hívó programban. Ha egy mutatót paraméterként adunk át, akkor a vonatkozó adatelemek globálisan megváltoznak a meghívott funkción belül. A mutatót referenciaként adja át. A funkciók mutatókkal különféle módon hajthatók végre:

  1. a referencia átadásával meghívott függvény
  2. A mutató elhaladásával indított funkció

A függvény a referencia átadásával hívja fel a figyelmet

Ebben az esetben a címet argumentumként adják át az értékek helyett.

Példa:

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

Kimenet:

$ g ++ -o main * .cpp
$ fő
Változás előtt

n = 5

m = 6

Változás után

n = 6

m = 5

Következtetés

A cikk célja, hogy frissítse a C ++ mutatók és alapvető témáik egyszerű használatával kapcsolatos ismereteit egy példával. A Pointer néven is ismert, mivel a locator csökkenti a kódkifejezést a jobb teljesítmény érdekében. A mutatók létfontosságú szerepet játszanak az adatszerkezetek, például a csatolt lista és a programozás rendszerszintű megvalósításában. Ezek a legelőnyösebb nyelvek a beágyazott rendszerekben, mivel ezek jó módszer a memória közvetlen elérésére a mutatók segítségével.

Ajánlott cikkek

Ez egy útmutató a C ++ mutatókhoz. Itt tárgyaljuk, hogyan hozhatunk létre mutatókat a C ++ programban, a megadott példákkal és kimenetekkel, és miért van szükségünk rá. További információt a következő adatelemzési tanfolyamon is megnézhet

  1. Mutatók a Pythonban
  2. Adattípusok C-ben
  3. Tömbök C ++-ban
  4. Csillagminták c ++ -ban
  5. Hogyan működik a mutatók a C # -ben?

Kategória: