Jaké jsou ukazatele v C ++?

Ukazuje nejvýkonnější nástroj v jazyce c ++, pomáhá programátorům přímý přístup k paměti a manipulaci s ní. Například při vytvoření proměnné je úkolem kompilátoru provést přidělení paměti k uložení hodnoty proměnné. A tato hodnota je získána pomocí názvu proměnné přiřazené k datům. C ++ má kompatibilitu pro ukládání a načítání dat z paměti odkazující na adresu umístění paměti, ve kterém jsou data uložena. C ++ dokonce provádí ukazatele na ukazateli.

Syntax

Obecný formát prohlášení ukazatele je:

Data_type * pointer -variable-name

Mějte na paměti, že před proměnnou ukazatele by měla předcházet hvězdička (*)

Příklad: int * xptr;

Proměnná xptr je ukazatel na celé číslo. Obecně mohou ukazatelové proměnné ukazovat na celočíselné proměnné, znakové proměnné, pole, soubory, funkce.

Proč potřebujeme ukazatele v C ++?

Dynamické přidělení paměti je v C ++ zjednodušeno pomocí ukazatelů, nejdůležitější význam ukazatelů je, že jsou mnohem účinnější při manipulaci s různými typy dat. Zvyšují rychlost provádění, když funkce vrací jednu hodnotu, a také dávají ruku v přístupu k proměnné definované mimo funkci. Nejběžnější použití zahrnuje správu dat a přístup k funkcím členů třídy.

Jak vytvořit ukazatele v C ++?

Zde jsou následující kroky k vytvoření ukazatelů v C ++

Krok č. 1 - Inicializace ukazatelů

Je vhodné inicializovat ukazatelové proměnné, jakmile jsou deklarovány. Protože proměnné ukazatele ukládají adresy, mohou adresovat libovolnou část paměti.

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

Zvažte následující příklad:

int p, * pi; // Tento příkaz dá kompilátoru pokyn, aby rezervoval prostor pro proměnnou p v paměti, aby obsahoval celočíselnou hodnotu.

pi = & a; // Přiřadí adresu proměnné integer p proměnné ukazatele. Například, pokud je adresa p 4581, pak se hodnota v * pi bude rovnat 4581.

Krok č. 2 - Ukazatel je neplatný

Zde může proměnná ukazatele směrovat na jakýkoli typ dat a tento typ se používá při předávání ukazatelů, aby fungovaly nezávisle na typu dat, na který je odkazováno.

Syntaxe: void * proměnná ukazatele;

Pří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ýstup:

$ g ++ -o hlavní * .cpp
$ main
hodnota označená 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 - Ukazatele aritmetických operací v C ++

Aritmetika ukazatele se provádí pomocí polí. Na ukazatelích lze provádět následující operace. Oni jsou:

  • Přírůstek (++)
  • Decrement (-)
  • Přidání ukazatele
  • Odčítání ukazatele

Když do ukazatele přidáme 1, určuje přidání velikosti ukazatele na.

Níže uvedený program určuje aritmetiku ukazatele, která funguje, dokud se nedostane na konec pole.

#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ýstup:

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

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32686

1

0

153860328

32766

Krok # 4 - Ukazatel na Ukazatel

float ** fpp;

Označuje dvě úrovně ukazatelů ( Multiple indirections ). Je to proměnná, která ukazuje na další ukazatel dále na objekt určený v umístění paměti. Například fpp je plovákový ukazatel, který aktuálně ukazuje na adresu paměti 2001, velikost plováku je 8 bajtů, pak podle

fpp ++;

označuje fpp směřující na adresu 2009. Podobně, když se proměnná sníží o 1, bude ukazovat na předchozí umístění svého základního typu na adrese 1993.

Krok # 5 - Ukazatel na funkce

Když jsou ukazatele předány funkci jako argumenty, datové položky spojené s proměnnou těchto ukazatelů jsou ve funkci změněny a poté vráceny volajícímu programu, změny zůstanou v volajícím programu zachovány. Když je ukazatel předán jako parametr, jsou příslušné datové položky globálně změněny zvané funkce. Ukazatel je předán odkazem. Funkce lze provádět ukazateli různými způsoby:

  1. funkce vyvolaná předáním reference
  2. Funkce vyvolaná předáním ukazatele

Funkce vyvolaná předáním reference

V tomto je adresa předána jako argument namísto hodnot.

Pří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ýstup:

$ g ++ -o hlavní * .cpp
$ main
Před změnou

n = 5

m = 6

Po změně

n = 6

m = 5

Závěr

Tento článek měl za cíl aktualizovat znalosti o tom, jak používat ukazatele v C ++ a jejich základní témata jednoduchým způsobem s příkladem. Ukazatel je také známý jako lokátor, který snižuje kódový kód pro vyšší výkon. Ukazatele hrají zásadní roli při implementaci datových struktur, jako je propojený seznam a programování na systémové úrovni. Jsou nejvýhodnějším jazykem zabudovaných systémů, protože jsou dobrým způsobem přímého přístupu k paměti pomocí ukazatelů.

Doporučené články

Toto je průvodce ukazateli v C ++. Zde diskutujeme o tom, jak vytvořit ukazatele v C ++ s uvedenými příklady a výstupy a proč to potřebujeme. Další informace naleznete v následujícím kurzu analýzy dat

  1. Ukazatele v Pythonu
  2. Typy dat v C
  3. Pole v C ++
  4. Hvězdné vzory v c ++
  5. Jak funguje ukazatel v C #?

Kategorie: