0Pricing
C Academy · Lezione

Variabili const

Renda i valori di sola lettura.

Variabili const è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.

Che cosa significa const

La parola chiave const comunica al compilatore che il valore di una variabile non deve cambiare dopo l'inizializzazione.

Se prova a modificarlo in seguito, la compilazione non riesce. Questo protegge i valori che devono rimanere fissi.

const int MAX_USERS = 100;

Dichiarare una const

Deve assegnare a una variabile const il suo valore al momento della dichiarazione, perché in seguito non può assegnarle un valore.

Qui PI viene inizializzata una sola volta e usata per la lettura come una normale variabile.

#include <stdio.h>
int main(void) {
    const double PI = 3.14159;
    printf("%f\n", PI);
    return 0;
}

Provare a modificare una const

Assegnare un valore a una const dopo la dichiarazione è un errore di compilazione.

La riga seguente verrebbe rifiutata dal compilatore, esattamente come desiderato per ottenere questa protezione.

const int LIMIT = 50;
/* LIMIT = 60; <- compile error */

const è tipizzata

A differenza di una macro semplice, una variabile const ha un tipo reale verificato dal compilatore.

Questo garantisce la sicurezza dei tipi: il compilatore sa che RATE è un double e segnala gli usi errati.

#include <stdio.h>
int main(void) {
    const double RATE = 0.05;
    double total = 200.0 * RATE;
    printf("%.2f\n", total);
    return 0;
}

const con i puntatori: dati

La costanza dei puntatori presenta due varianti. const int *p significa che i dati puntati non possono essere modificati tramite p.

Può comunque spostare p per farlo puntare altrove, ma non può scrivere attraverso di esso.

int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */

const con i puntatori: puntatore

int *const p significa che il puntatore stesso non può essere riassegnato, ma i dati possono essere modificati.

Legga le dichiarazioni da destra verso sinistra: "p è un puntatore const a int".

int x = 5, y = 8;
int *const p = &x;
*p = 9;       /* allowed */
/* p = &y;    <- error: pointer is const */

Proteggere gli argomenti delle funzioni

Dichiarare const un parametro puntatore garantisce che la funzione non modificherà i dati del chiamante.

Questo documenta l'intento e permette al compilatore di rilevare le scritture accidentali.

#include <stdio.h>
void show(const char *msg) {
    printf("%s\n", msg);
}
int main(void) {
    show("hello");
    return 0;
}

const in un calcolo

Un uso comune è rappresentato dai valori di configurazione fissi, come un'aliquota fiscale o un fattore di conversione.

Leggere la costante rende la formula più chiara e mantiene il valore in un unico punto.

#include <stdio.h>
int main(void) {
    const double KM_PER_MILE = 1.609;
    double miles = 10.0;
    printf("%.2f km\n", miles * KM_PER_MILE);
    return 0;
}

Const ha una posizione in memoria

Poiché una const è una variabile reale, occupa memoria ed è possibile ottenerne l'indirizzo.

Questo è diverso da una macro #define, che è una pura sostituzione testuale e non ha alcun indirizzo.

#include <stdio.h>
int main(void) {
    const int N = 42;
    const int *p = &N;
    printf("%d\n", *p);
    return 0;
}

Ambito e durata

Una const segue le stesse regole di ambito delle variabili ordinarie.

Se viene dichiarata all'interno di una funzione, è locale; se viene dichiarata all'esterno, è globale. Questo ambito è un altro vantaggio rispetto alle macro valide per l'intero file.

#include <stdio.h>
const int GLOBAL_MAX = 1000;
int main(void) {
    const int local_min = 1;
    printf("%d %d\n", local_min, GLOBAL_MAX);
    return 0;
}

const e numeri magici

Sostituire i numeri scritti direttamente nel codice con valori const denominati elimina i "numeri magici".

Se il valore cambia, è sufficiente modificare una riga invece di cercarlo nell'intero programma.

#include <stdio.h>
int main(void) {
    const int SECONDS_PER_MIN = 60;
    int minutes = 5;
    printf("%d seconds\n", minutes * SECONDS_PER_MIN);
    return 0;
}

Verifica rapida

Verifichi la Sua comprensione del comportamento di const.

Riepilogo

Una variabile const è un valore tipizzato e di sola lettura che il compilatore protegge dalle modifiche.

Ha un tipo, un ambito e un indirizzo, a differenza di una macro. Con i puntatori, const può applicarsi ai dati, al puntatore o a entrambi. Ora confronteremo questo meccanismo con #define.

Domande Frequenti

La lezione «Variabili const» è gratuita?

Sì — il testo completo di «Variabili const» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.

Cosa imparerò in «Variabili const»?

Renda i valori di sola lettura. Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C Academy?

Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Variabili const»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C Academy?

Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Definire enum
  2. Valori e intervalli degli enum
  3. Variabili const
  4. Costanti #define
← Torna a C Academy