Tieni presente che mentre quella alternativa acquista visibilità, l'altra non viene cancellata, rimane in memoria!!!
Cioè, vive ancora!!

Il tempo di vita di una variabile è in effetti il tempo a cui è associata ad essa un indirizzo di memoria.

1. il blocco è in generale una sequenza di dichiarazioni ed istruzioni ed individua l'ambiente di validità delle variabili introdotte. La sua struttura è questa:
{sezione dichiarativa;
sezione eseccutiva }

2. funzione: nel c++ non si distingue tra funzione e procedura (sono dei sottoprogrammi). La funzione alla fine delle sue operazioni ritorna qualcosa al programma chiamante, ad esempio:
int prodotto(int a, int b) {
int p;
p=a*b;
return p;
}
nel programma chiamante potrai quindi scrivere :
cout << prodotto(5,10);
La procedura non restituisce nulla al programma chiamante.In c++ si realizza con una funzione con parametro di uscita void.
void stampa(int);
Immagina ad una funzione di stampa a video: non deve restituire nulla al programma chiamante!!

3. il file è un livello in +...tieni presente che un programma (che deve contenere un solo main) può essere costituito da + file: lavorando su + file puoi modularizzare il prog e in genere programmatori diversi lavorano a file diversi!!

Capirai poi, programmando, l'utilità di ridefinire variabili con lo stesso nome, risparmierai tempo nel fantasticare sui nuovi nomi da assegnarle!!!

Sperodi non aver detto orrori..cmq credo ci sarà sempre qualcuno pronto a correggermi!!

Ciao!!