Menu
Coddy logo textTech

L’operatore di indirizzo (&)

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 3 di 63.

Ora che sai dichiarare i puntatori, devi imparare come memorizzare effettivamente un indirizzo di memoria al loro interno. L'operatore indirizzo di (&) è fondamentale per ottenere l'indirizzo di memoria di qualsiasi variabile.

Quando metti l’operatore & davanti al nome di una variabile, restituisce l’indirizzo di memoria in cui è memorizzata quella variabile. Immagina di chiederti: «Dove si trova questa variabile in memoria?»

int age = 25;
int *ptr;
ptr = &age;    // Memorizza l'indirizzo di 'age' in 'ptr'

In questo esempio, &age ci fornisce l’indirizzo di memoria della variabile age. Poi assegniamo questo indirizzo al nostro puntatore ptr. Ora ptr «punta a» la variabile age.

L'operatore di indirizzo è essenziale perché è il collegamento tra le variabili normali e i puntatori. Senza di esso, non potresti indicare a un puntatore a quale variabile puntare. Ricorda che i tipi di dati devono corrispondere: puoi assegnare l'indirizzo di un intero solo a un puntatore dichiarato per gli interi.

challenge icon

Sfida

Facile

Scrivi un programma C che mostri come usare l'operatore di indirizzo per collegare le variabili ai puntatori. Il tuo programma deve:

  1. Dichiarare una variabile intera chiamata number e inizializzarla con il valore 42
  2. Dichiarare una variabile carattere chiamata letter e inizializzarla con il valore 'X'
  3. Dichiarare un puntatore a un intero chiamato num_ptr
  4. Dichiarare un puntatore a un carattere chiamato char_ptr
  5. Usare l'operatore di indirizzo per assegnare l'indirizzo di number a num_ptr
  6. Usare l'operatore di indirizzo per assegnare l'indirizzo di letter a char_ptr
  7. Stampare gli indirizzi contenuti in entrambi i puntatori usando printf con lo specificatore di formato %p

Il tuo output deve mostrare gli indirizzi dei puntatori nel seguente formato:

Address of number: [address]
Address of letter: [address]

Gli indirizzi di memoria effettivi varieranno da un'esecuzione del programma all'altra, ma il formato e le etichette devono corrispondere esattamente a quanto mostrato sopra. [address] è un segnaposto per l'indirizzo stampato: non stampare le parentesi quadre.

Provalo tu

#include <stdio.h>

int main() {
    // TODO: Scrivi qui il tuo codice
    // 1. Dichiara e inizializza le variabili
    // 2. Dichiara i puntatori
    // 3. Usa l'operatore di indirizzo per assegnare gli indirizzi
    // 4. Stampa gli indirizzi usando il formato mostrato
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online