Riepilogo di durata e di visibilitàSummary of Lifetime and Visibility

Nella tabella seguente è riportato un riepilogo delle caratteristiche di visibilità e di durata per la maggior parte degli identificatori.The following table is a summary of lifetime and visibility characteristics for most identifiers. Le prime tre colonne forniscono gli attributi che definiscono la durata e la visibilità.The first three columns give the attributes that define lifetime and visibility. Un identificatore con gli attributi forniti nelle prime tre colonne presenta la durata e la visibilità illustrate nella colonne quarta e quinta.An identifier with the attributes given by the first three columns has the lifetime and visibility shown in the fourth and fifth columns. Tuttavia, questa tabella non considera tutti i possibili casi.However, the table does not cover all possible cases. Per altre informazioni, fare riferimento a Classi di archiviazione.Refer to Storage Classes for more information.

Riepilogo di durata e di visibilitàSummary of Lifetime and Visibility

Attributi:Attributes:

LivelloLevel
ElementoItem Classe di archiviazioneStorage-Class

IdentificatoreSpecifier
Risultato:Result:

DurataLifetime
VisibilitàVisibility
Ambito di tipo fileFile scope Definizione di variabileVariable definition staticstatic GlobalGlobal Resto del file di origine in cui si verificaRemainder of source file in which it occurs
Dichiarazione di variabileVariable declaration extern GlobalGlobal Resto del file di origine in cui si verificaRemainder of source file in which it occurs
Prototipo o definizione di funzioneFunction prototype or definition staticstatic GlobalGlobal File di origine singoloSingle source file
Prototipo di funzioneFunction prototype extern GlobalGlobal Resto del file di origineRemainder of source file
Ambito bloccoBlock scope Dichiarazione di variabileVariable declaration extern GlobalGlobal BloccoBlock
Definizione di variabileVariable definition staticstatic GlobalGlobal BloccoBlock
Definizione di variabileVariable definition auto o registerauto or register LocaleLocal BloccoBlock

EsempioExample

DescrizioneDescription

Nell'esempio seguente vengono illustrati i blocchi, l'annidamento e la visibilità di variabili:The following example illustrates blocks, nesting, and visibility of variables:

CodiceCode

// Lifetime_and_Visibility.c  

#include <stdio.h>  

int i = 1;  // i defined at external level  

int main()  // main function defined at external level  
{  
    printf_s( "%d\n", i ); // Prints 1 (value of external level i)  
    {                                 // Begin first nested block  
        int i = 2, j = 3;          // i and j defined at internal level  
        printf_s( "%d %d\n", i, j );  // Prints 2, 3  
        {                             // Begin second nested block  
            int i = 0;                // i is redefined  
            printf_s( "%d %d\n", i, j ); // Prints 0, 3  
        }                             // End of second nested block  
        printf_s( "%d\n", i );        // Prints 2 (outer definition  
                                      //  restored)  
    }                                 // End of first nested block  
    printf_s( "%d\n", i );            // Prints 1 (external level  
                                      // definition restored)  
    return 0;  
}   

CommentiComments

In questo esempio, sono disponibili quattro livelli di visibilità: il livello esterno e tre livelli di blocco.In this example, there are four levels of visibility: the external level and three block levels. I valori vengono visualizzati sullo schermo come indicato nei commenti che seguono ogni istruzione.The values are printed to the screen as noted in the comments following each statement.

Vedere ancheSee Also

Durata, ambito, visibilità e collegamentoLifetime, Scope, Visibility, and Linkage