Difficoltà: scuola superiore
Materia: Informatica
Cosa sono i puntatori?
Sono semplicemente delle variabili, anche se c’è da considerare che sono delle variabili un po’ speciali. I puntatori rappresentano un tipo di variabile destinata a contenere l’indirizzo di memoria di un’altra variabile. In pratica il puntatore è una variabile che contiene un indirizzo di memoria. Quale indirizzo di memori? Quello della variabile a cui punta.
Inoltre ti consigliamo la visione di questi articoli:
Come implementare un programma C++ per la somma di due numeri interi
Programma in C++ per calcolare area e perimetro di figure geometriche
Come scrivere il codice di un programma C++ per il calcolo della media dei voti scolastici
Come scrivere un programma C++ che stampi il minimo e il massimo dati 3 numeri interi
Inoltre, ecco un libro consigliato da noi direttamente da Amazon che ti permette di imparare in modo semplice e veloce il linguaggio di programmazione C++
Il manuale introduce ai principi della programmazione scegliendo come linguaggio didattico il C++, il quarto per diffusione a livello mondiale, conservando dell’edizione originale l’approccio e l’orientamento più pragmatico che formale (Clicca nell’immagine per visualizzare il libro, oppure il link sotto).
Libro: Fondamenti di programmazione in C++(ACQUISTA SU AMAZON)
Per iniziare..
Facciamo finta che esista una variabile, che chiameremo appunto var, di tipo int, a cui punta il puntatore, chiamato per l’appunto punt.
La sintassi per dichiarare il puntatore è la seguente:
int *punt;
Per assegnare il valore al puntatore ci si deve prima ricordare di dichiarare la variabile verso cui si vuole che punti per poi assegnare l’indirizzo corrispondente di quella variabile al puntatore. Si utilizza invece la sintassi seguente:
int var;
punt = &var;
Come si può notare l’assegnazione non segue le assegnazioni classiche, piuttosto il valore del puntatore viene associato in un modo particolare. Il simbolo“&” ci dice che la variabile punt contiene l’indirizzo di memoria di var.
Supponiamo per semplicità quanto segue:
Come si può notare l’assegnazione non segue le assegnazioni classiche, piuttosto il valore del puntatore viene associato in un modo particolare. Il simbolo“&” ci dice che la variabile punt contiene l’indirizzo di memoria di var.
Supponiamo per semplicità quanto segue:
- var ha un contenuto pari a 3 perché gli è stato assegnato via codice;
- var si trova all’indirizzo di memoria 0x12;
- punt si trova all’indirizzo di memoria 0x13;
Di seguito viene riportato un esempio di quale sarebbe il contenuto nella memoria.
Tabella 1
Indirizzo | Variabile associata | Contenuto |
---|---|---|
0x12 | var | 3 |
0x13 | punt | 0x12 |
Come si può notare il puntatore è la variabile hanno contenuti molto diversi tra di loro. Di per sé il puntatore non è un tipo intero ma punta a una variabile di cui il tipo è dichiarato intero.
I puntatori, in questo caso Il puntatore..
è una variabile che contiene l’indirizzo di memoria della variabile a cui punta.
Come già detto al puntatore gli viene detto di puntare a variabile con questa istruzione:
punt = &var;
Ma il puntatore..
Ha anche il potere di cambiare il contenuto di var. Supponiamo infatti di voler cambiare il contenuto di var dopo che è stato dichiarato il suo puntatore punt. Ci sono due vie per farlo:
- assegnando direttamente var;
- scrivendo il contenuto di var tramite punt;
Supponiamo per esempio di voler cambiare il contenuto di var tramite puntatore e di voler dare a var un valore pari a 5. Per farlo bisogna scrivere:
*punt=5;
E il nuovo contenuto delle memorie sarà il seguente:
Tabella 2
Indirizzo | Variabile associata | Contenuto |
---|---|---|
0x12 | var | 5 |
0x13 | punt | 0x12 |
Esempio per poterti esercitare con i puntatori
/******************************************************************************
Esercitazione con i puntatori
*******************************************************************************/
#include <iostream>
using namespace std;
int main()
{
//dichiarazione della variabile puntatore
float *puntatore;
float *puntatore2;
//dichiarazione della variabile variabile
float variabile;
//assegnazione di variabile
variabile = 5.5;
cout<<"Il contenuto di variabile è: " << variabile <<endl;
cout<<"L'indirizzo di memoria di variabile è: " << &variabile <<endl;
// tentativo di cambio contenuto di variabile
variabile = 7.7;
cout<<"Il nuovo contenuto di variabile è: " << variabile <<endl;
cout<<"L'indirizzo di memoria di variabile è: " << &variabile <<endl;
//dichiarazione di un'altra variabile variabile2
float variabile2;
//assegnazione di variabile
variabile2 = 5.55;
cout<<"Il contenuto di variabile2 è: " << variabile2 <<endl;
cout<<"L'indirizzo di memoria di variabile2 è: " << &variabile2 <<endl;
//assegnazione dell'indirizzo di memoria di variabile a puntatore
puntatore = &variabile;
cout<<"L'indirizzo di puntatore è: "<< &puntatore<<endl;
cout<<"Il contenuto di puntatore è: "<< puntatore<<endl;
cout<<"Il contenuto dell'indirizzo a cui punta il puntatore è: "<< *puntatore<<endl;
puntatore2 = &variabile2;
cout<<"L'indirizzo di puntatore2 è: "<< &puntatore2<<endl;
cout<<"Il contenuto di puntatore2 è: "<< puntatore2<<endl;
cout<<"Il contenuto dell'indirizzo a cui punta il puntatore2 è: "<< *puntatore2<<endl;
return 0;
}
Un commento su “Cosa sono i puntatori in C++ e come usarli”
I commenti sono chiusi.