0Pricing
C Academy · Lezione

register e const

Suggerimenti e immutabilità

register e const è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 4 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.

L’indicazione register

register suggerisce di mantenere una variabile in un registro della CPU per aumentare la velocità. È solo un’indicazione; i compilatori moderni solitamente la ignorano.

#include <stdio.h>
int main(void) {
    register int i;
    int sum = 0;
    for (i = 0; i < 5; i++)
        sum += i;
    printf("sum = %d\n", sum);
    return 0;
}

Non è possibile ottenerne l’indirizzo

Poiché una variabile register potrebbe non risiedere in memoria, non è possibile ottenerne l’indirizzo con &.

#include <stdio.h>
int main(void) {
    register int x = 10;
    printf("x = %d\n", x);
    return 0;
}

Perché register è raro oggi

I compilatori ottimizzatori collocano già nei registri le variabili usate più frequentemente. Oggi la parola chiave è soprattutto un retaggio storico.

#include <stdio.h>
int main(void) {
    int product = 1;
    for (register int i = 1; i <= 4; i++)
        product *= i;
    printf("product = %d\n", product);
    return 0;
}

Il qualificatore const

const rende una variabile di sola lettura dopo l’inizializzazione. Tentare di modificarla produce un errore di compilazione.

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

Le costanti documentano l’intenzione

Usare const per i valori fissi rende il codice più chiaro e protegge dalle modifiche accidentali.

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

const con i puntatori

const int *p significa che il valore puntato non può essere modificato tramite p. Il puntatore, invece, può ancora essere spostato.

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

Puntatore costante

int * const p significa che il puntatore non può essere modificato, ma il valore a cui punta sì.

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

Parametri di funzione const

Contrassegnare un parametro con const garantisce che la funzione non lo modificherà, aiutando chi la chiama a prevederne il comportamento.

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

Immutabilità per progettazione

Preferisca const per qualsiasi valore che non dovrebbe cambiare. In questo modo gli errori vengono rilevati durante la compilazione.

#include <stdio.h>
int main(void) {
    const int LIMIT = 100;
    int x = 90;
    if (x < LIMIT)
        printf("under limit\n");
    return 0;
}

Combinazione di const e variabili globali

Una variabile globale const è una costante condivisa e sicura, disponibile nell’intero file.

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

register e const insieme

È persino possibile contrassegnare un contatore di ciclo con entrambe, anche se in questo caso const significa che il corpo del ciclo non deve modificarlo.

#include <stdio.h>
int main(void) {
    int sum = 0;
    for (int i = 0; i < 3; i++) {
        const int doubled = i * 2;
        sum += doubled;
    }
    printf("sum = %d\n", sum);
    return 0;
}

Verifica rapida

Verifichi la Sua comprensione di register e const.

Riepilogo: register e const

Ha imparato a conoscere due qualificatori.

  • register suggerisce l’uso di un registro, ma viene solitamente ignorato
  • Non è possibile ottenere l’indirizzo di una variabile register
  • const rende un valore di sola lettura
  • La costanza dei puntatori ha due forme: valore const e puntatore const
  • Usi const liberamente per maggiore sicurezza

Domande Frequenti

La lezione «register e const» è gratuita?

Sì — il testo completo di «register e 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 «register e const»?

Suggerimenti e immutabilità 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 4 di 4.

Quanto tempo richiede la lezione «register e 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. auto e ambito locale
  2. Variabili static
  3. extern e globale
  4. register e const
← Torna a C Academy