Linguaggio C++

Introduzione

Introduzione ai puntatori in C++: cosa sono, come si dichiarano e come funzionano gli operatori & e *.

I puntatori sono una delle caratteristiche fondamentali del linguaggio C e C++. Un puntatore è una variabile che memorizza l’indirizzo di memoria di un’altra variabile. Capire i puntatori significa capire come i dati vengono gestiti in memoria.


1️⃣ Cos’è un puntatore

Ogni variabile in C++ è salvata in una certa posizione di memoria, identificata da un indirizzo. Un puntatore è una variabile che contiene proprio questo indirizzo.

int x = 10;      // variabile normale
int* p;          // dichiarazione di un puntatore a int
p = &x;          // p contiene l indirizzo di x

✅ In questo esempio:

  • x è una variabile intera con valore 10.
  • &x è l indirizzo di memoria di x.
  • p è un puntatore che contiene &x.


2️⃣ Operatori & e *

Due operatori sono fondamentali per usare i puntatori:

  • & (“address of”) → restituisce l indirizzo di una variabile.
  • * (“dereference”) → accede al valore contenuto nell indirizzo puntato.
int x = 10;
int* p = &x; // p punta a x

cout << "Valore di x: " << x << endl;
cout << "Indirizzo di x: " << &x << endl;
cout << "Contenuto di p (indirizzo di x): " << p << endl;
cout << "Valore puntato da p: " << *p << endl;

✅ Output tipico:

Valore di x: 10
Indirizzo di x: 0x61ff0c
Contenuto di p: 0x61ff0c
Valore puntato da p: 10

Nota che *p accede al valore della variabile a cui p punta, in questo caso x.


3️⃣ Puntatori e modifica indiretta

Una volta che un puntatore “punta” a una variabile, possiamo modificarne il valore indirettamente:

int x = 10;
int* p = &x;

*p = 25;  // modifica x attraverso il puntatore
cout << "Nuovo valore di x: " << x;

✅ Output:

Nuovo valore di x: 25

4️⃣ Rappresentazione grafica

Possiamo immaginare la memoria così:

VariabileContenutoIndirizzo
x250x61ff0c
p0x61ff0c0x61ff08

Il puntatore p contiene l indirizzo di x. Usando *p accediamo al contenuto di quell indirizzo (cioè a x).


5️⃣ Dichiarazione di più puntatori

int *p1, *p2;   // due puntatori a int
float *pf;      // puntatore a float
char *pc;       // puntatore a char

⚠️ Attenzione: l’asterisco va scritto vicino al tipo (int*), non solo alla variabile, per chiarezza.

LABORATORIO

Creiamo il nostro primo puntatore

In questo laboratorio imparerai a dichiarare un puntatore, assegnargli l indirizzo di una variabile, e usare gli operatori & e * per accedere ai valori.


1 Dichiarazione e inizializzazione

Dichiara una variabile intera e un puntatore a int. Assegna al puntatore l indirizzo della variabile.

int numero = 5;
int* ptr = №

2 Stampa di valore e indirizzo

Stampa a video sia il valore della variabile che il suo indirizzo.

cout << "Valore: " << numero << endl;
cout << "Indirizzo di numero: " << &numero << endl;
cout << "Contenuto del puntatore: " << ptr << endl;
cout << "Valore puntato da ptr: " << *ptr << endl;

3 Modifica tramite puntatore

Assegna un nuovo valore alla variabile usando il puntatore.

*ptr = 100;
cout << "Nuovo valore di numero: " << numero;

4 Esercizi aggiuntivi

  • Dichiara due variabili e un puntatore: prova a puntare alternativamente all’una e all’altra.
  • Prova a stampare i valori prima e dopo una modifica indiretta.
  • Dichiara un puntatore a float e assegna il valore di una variabile reale.