수명 및 표시 유형에 대한 요약Summary of Lifetime and Visibility

다음 표에서는 대부분의 식별자에 대한 수명 및 표시 유형 특징을 요약합니다.The following table is a summary of lifetime and visibility characteristics for most identifiers. 처음 세 열에서는 수명과 표시 유형을 정의하는 특성을 제공합니다.The first three columns give the attributes that define lifetime and visibility. 처음 세 열에서 제공하는 특성이 있는 식별자의 수명과 표시 유형은 4번째 열과 5번째 열에 표시되어 있습니다.An identifier with the attributes given by the first three columns has the lifetime and visibility shown in the fourth and fifth columns. 가능한 모든 경우가 이 표에 포함되어 있지는 않습니다.However, the table does not cover all possible cases. 자세한 내용은 저장소 클래스를 참조하세요.Refer to Storage Classes for more information.

수명 및 표시 유형에 대한 요약Summary of Lifetime and Visibility

특성:Attributes:

수준Level
항목Item 저장소 클래스Storage-Class

지정자Specifier
결과:Result:

수명Lifetime
표시 유형Visibility
파일 범위File scope 변수 정의Variable definition staticstatic GlobalGlobal 이 항목이 발생하는 소스 파일의 나머지 부분Remainder of source file in which it occurs
변수 선언Variable declaration extern GlobalGlobal 이 항목이 발생하는 소스 파일의 나머지 부분Remainder of source file in which it occurs
함수 프로토타입 또는 정의Function prototype or definition staticstatic GlobalGlobal 단일 소스 파일Single source file
함수 프로토타입Function prototype extern GlobalGlobal 소스 파일의 나머지 부분Remainder of source file
블록 범위Block scope 변수 선언Variable declaration extern GlobalGlobal 블록Block
변수 정의Variable definition staticstatic GlobalGlobal 블록Block
변수 정의Variable definition auto 또는 registerauto or register 로컬Local 블록Block

예제Example

설명Description

다음 예제에서는 변수의 블록, 중첩 및 표시 유형을 보여 줍니다.The following example illustrates blocks, nesting, and visibility of variables:

코드Code

// 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;  
}   

설명Comments

이 예제에는 네 가지 수준의 표시 유형(외부 수준과 세 가지 블록 수준)이 있습니다.In this example, there are four levels of visibility: the external level and three block levels. 값은 각 문 다음에 있는 주석에 언급된 것처럼 화면에 출력됩니다.The values are printed to the screen as noted in the comments following each statement.

참고 항목See Also

수명, 범위, 표시 유형 및 링크Lifetime, Scope, Visibility, and Linkage