Aké sú ukazovatele v jazyku C ++?

Ukazuje najvýkonnejší nástroj v jazyku c ++, pomáha programátorovi priamo pristupovať k pamäti a manipulovať s ňou. Napríklad, keď sa vytvorí premenná, úlohou kompilátora je pridelenie pamäte na uloženie hodnoty premennej. A táto hodnota sa získa pomocou názvu premennej priradeného k údajom. C ++ má kompatibilitu na ukladanie a získavanie údajov z pamäte s odkazom na adresu miesta v pamäti, na ktorom sú dáta uložené. C ++ dokonca vykonáva ukazovatele na ukazovateli.

syntax

Všeobecný formát vyhlásenia ukazovateľa je:

Data_type * pointer -variable-name

Všimnite si, že premennej ukazovateľa by mala predchádzať hviezdička (*)

Príklad: int * xptr;

Premenná xptr je ukazovateľ na celé číslo. Premenné ukazovateľov môžu vo všeobecnosti ukazovať na celočíselné premenné, znakové premenné, polia, súbory, funkcie.

Prečo potrebujeme ukazovatele v jazyku C ++?

Dynamické prideľovanie pamäte je jednoduché v C ++ pomocou ukazovateľov, najdôležitejší význam ukazovateľov je, že sú oveľa efektívnejšie pri manipulácii s rôznymi typmi údajov. Zvyšujú rýchlosť vykonávania, keď funkcia vracia jednu hodnotu, a tiež dávajú ruku v prístupe k premennej definovanej mimo funkcie. Najbežnejšie použitie zahŕňa správu údajov a prístup k funkciám členov triedy.

Ako vytvoriť ukazovatele v C ++?

Tu sú nasledujúce kroky na vytvorenie ukazovateľov v jazyku C ++

Krok č. 1 - Inicializácia ukazovateľov

Je vhodné inicializovať ukazovacie premenné ihneď po ich deklarovaní. Pretože premenné ukazovateľov ukladajú adresy, môžu adresovať ľubovoľnú časť pamäte.

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

Zoberme si nasledujúci príklad:

int, * pi; // Tento príkaz inštruuje kompilátor, aby vyhradil priestor pre premennú p v pamäti, aby udržala celočíselnú hodnotu.

pi = A; // Priradí adresu celočíselnej premennej p premennej ukazovateľa. Napríklad, ak je adresa p 4581, potom sa hodnota v * pi bude rovnať 4581.

Krok č. 2 - Zrušenie ukazovateľa

Premenná ukazovateľa tu môže ukazovať akýkoľvek typ údajov a tento typ sa používa pri odovzdávaní ukazovateľov na fungovanie, ktoré fungujú nezávisle od typu údajov, na ktorý sa odkazuje.

Syntax: void * ukazovateľ premennej;

Príklad:

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

Výkon:

$ g ++ -o hlavné * .cpp
$ hlavné
hodnota označená ako iv je 3
Adresa x je 0x7ffefbbee6d4
hodnota označená fv je 45, 2
Adresa f je 0x7ffefbbee6d0
Adresa x je 0x7ffefbbee6d4

adresa f je 0x7ffefbbee6d0

Krok č. 3 - Ukazovatele aritmetických operácií v jazyku C ++

Ukazovateľ aritmetiky sa vykonáva pomocou polí. Na ukazovateľoch je možné vykonávať nasledujúce operácie. Oni sú:

  • Prírastok (++)
  • Dekrement (-)
  • Pridanie ukazovateľa
  • Odčítanie ukazovateľa

Keď do ukazovateľa pridáme 1, určuje pridanie veľkosti ukazovateľa smerujúceho na.

Nižšie uvedený program určuje aritmetiku ukazovateľa, ktorý funguje, až kým sa nedostane na koniec poľa.

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

Výkon:

$ g ++ -o hlavné * .cpp
$ hlavné
2

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32686

1

0

153860328

32766

Krok č. 4 - Ukazovateľ na Ukazovateľ

float ** fpp;

Označuje dve úrovne ukazovateľov ( viacnásobné smerovanie ). Je to premenná, ktorá ukazuje na iný ukazovateľ a ďalej odkazuje na objekt určený v pamäťovom umiestnení. Napríklad fpp je plavákový ukazovateľ, ktorý v súčasnosti ukazuje na adresu pamäte 2001, veľkosť plaváka je 8 bajtov, potom podľa

FPP ++;

označuje fpp smerujúci na adresu 2009. Podobne, keď sa premenná zníži o 1, bude ukazovať na predchádzajúce umiestnenie jej základného typu na adrese 1993.

Krok č. 5 - Ukazovateľ funkcií

Keď ukazovatele prechádzajú na funkciu ako argumenty, dátové položky spojené s premennou týchto ukazovateľov sa v rámci funkcie upravia a potom sa vrátia do volajúceho programu, zmeny sa zachovajú vo volajúcom programe. Ak je ukazovateľ odovzdaný ako parameter, príslušné dátové položky sa globálne zmenia zvolanou funkciou. Ukazovateľ prechádza odkazom. Funkcie sa môžu vykonávať ukazovateľmi rôznymi spôsobmi:

  1. funkcia vyvolaná odovzdaním odkazu
  2. Funkcia vyvolaná odovzdaním ukazovateľa

Funkcia vyvolaná odovzdaním odkazu

V tomto je adresa odovzdaná ako argument namiesto hodnôt.

Príklad:

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

Výkon:

$ g ++ -o hlavné * .cpp
$ hlavné
Pred zmenou

n = 5

m = 6

Po zmene

n = 6

m = 5

záver

Tento článok má za cieľ obnoviť vedomosti o tom, ako používať ukazovatele v jazyku C ++, a ich základné témy jednoduchým spôsobom s príkladom. Ukazovateľ je tiež známy ako lokátor, ktorý znižuje kódový príkaz pre vyšší výkon. Ukazovatele hrajú dôležitú úlohu pri implementácii dátových štruktúr, ako sú prepojené zoznamy a programovanie na systémovej úrovni. Sú najvýhodnejším jazykom zabudovaných systémov, pretože sú dobrým spôsobom priameho prístupu k pamäti pomocou ukazovateľov.

Odporúčané články

Toto je sprievodca ukazovateľmi v jazyku C ++. Tu diskutujeme o tom, ako vytvoriť ukazovatele v jazyku C ++ s uvedenými príkladmi a výstupmi a prečo ich potrebujeme. Ak sa chcete dozvedieť viac, môžete sa tiež pozrieť na nasledujúci kurz analýzy údajov

  1. Ukazovatele v Pythone
  2. Typy údajov v C
  3. Polia v C ++
  4. Vzory hviezd v c ++
  5. Ako funguje ukazovateľ v jazyku C #?

Kategórie: