Menu
Coddy logo textTech

Dichiarare i puntatori

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

Ora che hai capito cosa sono i puntatori, impariamo a crearli. La dichiarazione di una variabile puntatore segue una sintassi specifica che indica al compilatore a quale tipo di dati punterà il puntatore.

La sintassi di base per dichiarare un puntatore è: data_type *pointer_name;

int *ptr;        // Dichiara un puntatore a un intero
char *ch_ptr;    // Dichiara un puntatore a un carattere
float *f_ptr;    // Dichiara un puntatore a un float

L'asterisco (*) è ciò che rende questa una dichiarazione di puntatore. Indica al compilatore che questa variabile memorizzerà un indirizzo di memoria, non il valore effettivo dei dati. Quando dichiari int *ptr;, stai dicendo «ptr è un puntatore che può memorizzare l'indirizzo di una variabile intera».

È buona norma inizializzare i puntatori a NULL se non puntano ancora a un indirizzo di memoria valido. Questo impedisce loro di puntare a posizioni di memoria casuali: int *ptr = NULL;

Quando stampi gli indirizzi dei puntatori usando printf, usa lo specificatore di formato %p. Spesso si consiglia di convertire il puntatore in (void *) per garantire la compatibilità e una formattazione corretta: printf("%p", (void *)ptr);

Nota che il tipo di dati prima dell'asterisco specifica a quale tipo di dati punterà il puntatore. Questo è importante perché i diversi tipi di dati occupano quantità diverse di spazio in memoria e il compilatore deve conoscere queste informazioni per gestire correttamente la memoria.

challenge icon

Sfida

Facile
Scrivi un programma C che mostri la sintassi corretta per dichiarare i puntatori. Il programma deve:
  1. Dichiarare un puntatore a un intero denominato int_ptr, inizializzato a NULL
  2. Dichiarare un puntatore a un carattere denominato char_ptr, inizializzato a NULL
  3. Dichiarare un puntatore a un valore float denominato float_ptr, inizializzato a NULL
  4. Stampare gli indirizzi di memoria memorizzati in ciascun puntatore usando printf con lo specificatore di formato %p. Quando stampi, esegui il cast del puntatore a (void*) per garantire la formattazione corretta, per esempio: printf("Label: %p\n", (void*)ptr);

L'output deve mostrare i tre indirizzi dei puntatori nel seguente formato:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

Nota che gli indirizzi di memoria effettivi varieranno, ma il formato e le etichette devono corrispondere esattamente a quelli mostrati sopra.

Provalo tu

#include <stdio.h>

int main() {
    // TODO: Dichiara qui i tuoi puntatori
    
    
    // TODO: Stampa gli indirizzi dei puntatori usando il formato richiesto
    
    
    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