Quali sono i puntatori in C ++?

Indica lo strumento più potente in c ++, aiuta il programmatore ad accedere e manipolare direttamente la memoria. Ad esempio, quando viene creata una variabile, il lavoro del compilatore consiste nell'eseguire l'allocazione di memoria per memorizzare il valore della variabile. E questo valore viene recuperato utilizzando il nome della variabile assegnato ai dati. C ++ ha la compatibilità per archiviare e recuperare i dati dalla memoria facendo riferimento all'indirizzo della posizione di memoria in cui sono memorizzati i dati. C ++ esegue anche puntatori su un puntatore.

Sintassi

Il formato generale della dichiarazione del puntatore è:

Data_type * pointer -variable-name

Si noti che la variabile puntatore deve essere preceduta da un asterisco (*)

Esempio: int * xptr;

La variabile xptr è un puntatore a un numero intero. In generale, le variabili del puntatore possono puntare a variabili intere, variabili di carattere, matrici, file, funzioni.

Perché abbiamo bisogno di puntatori in C ++?

L'allocazione dinamica della memoria è semplificata in C ++ utilizzando i puntatori, la più importante importanza dei puntatori è che sono molto efficienti nella gestione dei diversi tipi di dati. Aumentano la velocità di esecuzione quando la funzione restituisce un valore e danno anche accesso ad una variabile definita all'esterno della funzione. L'uso più comune include la gestione dei dati e l'accesso alle funzioni dei membri della classe.

Come creare puntatori in C ++?

Ecco i seguenti passaggi per creare puntatori in C ++

Passaggio n. 1: inizializzazione di puntatori

Si consiglia di inizializzare le variabili del puntatore, non appena vengono dichiarate. Poiché le variabili puntatore memorizzano gli indirizzi, possono indirizzare qualsiasi parte della memoria.

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

Considera il seguente esempio:

int p, * pi; // Questa istruzione indica al compilatore di riservare uno spazio per la variabile p in memoria per contenere un valore intero.

pi = & a; // Assegna l'indirizzo della variabile intera p alla variabile puntatore. Ad esempio, se l'indirizzo di p è 4581, il valore in * pi sarà uguale a 4581.

Passaggio n. 2 - Puntatore nullo

Qui la variabile puntatore può puntare qualsiasi tipo di dati e questo tipo viene utilizzato nel passaggio dei puntatori a funzioni che funzionano indipendentemente dal tipo di dati indicato.

Sintassi: void * variabile puntatore;

Esempio:

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

Produzione:

$ g ++ -o main * .cpp
$ principale
il valore indicato da iv è 3
L'indirizzo di x è 0x7ffefbbee6d4
il valore indicato da fv è 45.2
L'indirizzo di f è 0x7ffefbbee6d0
L'indirizzo di x è 0x7ffefbbee6d4

l'indirizzo di f è 0x7ffefbbee6d0

Step # 3 - Puntatori Operazioni aritmetiche in C ++

L'aritmetica del puntatore viene eseguita con array. Le seguenti operazioni possono essere eseguite sui puntatori. Loro sono:

  • Incremento (++)
  • Decremento (-)
  • Aggiunta puntatore
  • Sottrazione del puntatore

Quando aggiungiamo 1 al puntatore, specifica l'aggiunta della dimensione del puntatore che punta a.

Il programma seguente specifica l'aritmetica del puntatore che funziona fino a quando non arriva alla fine dell'array.

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

Produzione:

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

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1.743, 362854 millions

32686

1

0

153860328

32766

Passaggio n. 4 - Puntatore a puntatore

float ** fpp;

Indica due livelli di puntatori ( più indicazioni indirette ). È una variabile che punta a un altro puntatore indica ulteriormente un oggetto specificato in una posizione di memoria. Ad esempio, fpp è un puntatore float che attualmente punta all'indirizzo di memoria 2001, la dimensione del float è di 8 byte, quindi per

FPP ++;

indica fpp che punta all'indirizzo 2009. Allo stesso modo, quando la variabile viene diminuita di 1, indicherà la posizione precedente del suo tipo di base all'indirizzo 1993.

Passaggio n. 5 - Puntatore alle funzioni

Quando i puntatori vengono passati a una funzione come argomenti, gli elementi di dati associati alla variabile di questi puntatori vengono modificati all'interno della funzione e quindi restituiti al programma chiamante, le modifiche verranno mantenute nel programma chiamante. Quando un puntatore viene passato come parametro, i rispettivi elementi di dati vengono modificati globalmente dall'interno della funzione chiamata. Il puntatore viene passato per riferimento. Le funzioni possono essere eseguite in puntatori in diversi modi:

  1. la funzione invocata passando il riferimento
  2. La funzione richiamata passando un puntatore

La funzione richiamata passando il riferimento

In questo, l'indirizzo viene passato come argomento anziché come valori.

Esempio:

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

Produzione:

$ g ++ -o main * .cpp
$ principale
Prima del cambiamento

n = 5

m = 6

Dopo il cambiamento

n = 6

m = 5

Conclusione

Questo articolo intendeva aggiornare le conoscenze su come utilizzare i puntatori in C ++ e i loro argomenti di base in modo semplice con un esempio. Il puntatore è anche noto come localizzatore riduce l'istruzione del codice per prestazioni più elevate. I puntatori svolgono un ruolo vitale nell'implementazione di strutture di dati come l'elenco collegato e la programmazione a livello di sistema. Sono il linguaggio più preferibile nei sistemi embedded in quanto sono un buon modo per accedere direttamente alla memoria usando i puntatori.

Articoli consigliati

Questa è una guida ai puntatori in C ++. Qui discutiamo come creare puntatori in C ++ con gli esempi e l'output forniti e perché ne abbiamo bisogno. Puoi anche consultare il seguente corso di analisi dei dati per saperne di più

  1. Puntatori in Python
  2. Tipi di dati in C
  3. Matrici in C ++
  4. Motivi a stella in c ++
  5. Come funzionano i puntatori in C #?

Categoria: