Esempio:
void foo() { int i = 1; printf ("%d\n", i); // modalità C int j = 1; // Non permesso in C printf ("%d\n", j); for (int k = 1; k < 10; k++) // Davvero non permesso in C printf ("%d\n", k); }Appena dichiari una variabile, essa è visibile nel blocco di codice in cui è stata dichiarata (un blocco di codice inizia con una "{" e finisce con una "}"). Ma dopo la fine del blocco, o prima della dichiarazione, la variabile non sarà utilizzabile. Per chiarire vediamo degli esempi sbagliati:
{ // Dopo questa linea (quella del for), i sarà visibile (per convenzione) // solo nel blocco di codice seguente. (Nota: nelle prime versioni dello // standard del C++, era visibile anche per tutto il resto della funzione. // Ma adesso questa regola non è più valida, e le cose sono un po' più logiche). for (int i = 0; i < 5; i++) // Dichiarazione di i per l'intero ciclo { // Inizio del blocco dentro cui i è "viva" e rimane dichiarata int j; } // Dopo questo }, i e j sono sconosciute // Poichè i è morta, non è più dichiarata, perciò questo è permesso: // in altri termini occorre dichiarare una nuova variabile i. // scrivendo for (int i = 0; i < 5; i++) for (i = 0; i < 5; i++) { } j = 2; // errore: j non dichiarata do { FILE *f = fopen ("my_file", "r"); } while (f == NULL); // f sconosciuta, ERRORE }