Menu
Coddy logo textTech

L’operatore di dereferenziazione (*)

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

Ora che sai come memorizzare gli indirizzi nei puntatori, devi imparare ad accedere al valore effettivo memorizzato a quell’indirizzo di memoria. L’operatore di dereferenziazione (*) ti permette di «seguire» il puntatore per ottenere il valore a cui punta.

Quando metti l'operatore * davanti a una variabile puntatore, accede al valore memorizzato all'indirizzo di memoria contenuto nel puntatore. Pensalo come dire: «dammi ciò che c'è nella stanza a questo indirizzo».

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Stampa 25 - il valore di age

È importante capire che l'asterisco (*) ha due significati diversi in C. Quando dichiari un puntatore come int *ptr;, l'asterisco indica che ptr è un puntatore. Quando viene usato con un puntatore esistente, come *ptr, dereferenzia il puntatore per accedere al valore a cui punta.

L’operatore di dereferenziazione è essenziale perché completa il ciclo dei puntatori: puoi memorizzare un indirizzo in un puntatore con & e poi recuperare il valore a quell’indirizzo con *. Questo ti permette di accedere indirettamente alle variabili e modificarle tramite i loro indirizzi di memoria.

challenge icon

Sfida

Facile

Scrivi un programma in C che dimostri il flusso di lavoro completo con i puntatori: dichiarazione, assegnazione dell’indirizzo e dereferenziazione. Il programma deve:

  1. Dichiarare una variabile intera chiamata value e inizializzarla con il valore 75
  2. Dichiarare una variabile float chiamata price e inizializzarla con il valore 19.99
  3. Dichiarare un puntatore a un intero chiamato value_ptr
  4. Dichiarare un puntatore a un float chiamato price_ptr
  5. Usare l’operatore di indirizzo per assegnare l’indirizzo di value a value_ptr
  6. Usare l’operatore di indirizzo per assegnare l’indirizzo di price a price_ptr
  7. Usare l’operatore di dereferenziazione per stampare il valore di value tramite value_ptr
  8. Usare l’operatore di dereferenziazione per stampare il valore di price tramite price_ptr con esattamente 2 cifre decimali

L’output deve visualizzare i valori dereferenziati nel seguente formato:

Value through pointer: 75
Price through pointer: 19.99

La sfida verifica la tua comprensione di come l’operatore di dereferenziazione recupera il valore della variabile originale seguendo l’indirizzo memorizzato nel puntatore.

Provalo tu

#include <stdio.h>

int main() {
    // TODO: Scrivi qui il tuo codice
    // 1. Dichiara e inizializza le variabili
    // 2. Dichiara i puntatori
    // 3. Assegna gli indirizzi ai puntatori
    // 4. Stampa i valori dereferenziati
    
    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