수명 및 표시 유형에 대한 요약
다음 표에서는 대부분의 식별자에 대한 수명 및 표시 유형 특징을 요약합니다. 처음 세 열에서는 수명과 표시 유형을 정의하는 특성을 제공합니다. 처음 세 열에서 제공하는 특성이 있는 식별자의 수명과 표시 유형은 4번째 열과 5번째 열에 표시되어 있습니다. 가능한 모든 경우가 이 표에 포함되어 있지는 않습니다. 자세한 내용은 스토리지 클래스를 참조하세요.
수명 및 표시 유형에 대한 요약
특성: Level |
항목 | 스토리지 클래스 지정자 |
결과: 수명 |
표시 유형 |
---|---|---|---|---|
파일 범위 | 변수 정의 | static |
전역 | 이 항목이 발생하는 소스 파일의 나머지 부분 |
변수 선언 | extern |
전역 | 이 항목이 발생하는 소스 파일의 나머지 부분 | |
함수 프로토타입 또는 정의 | static |
전역 | 단일 소스 파일 | |
함수 프로토타입 | extern |
전역 | 소스 파일의 나머지 부분 | |
블록 범위 | 변수 선언 | extern |
전역 | 블록 |
변수 정의 | static |
전역 | 블록 | |
변수 정의 | auto 또는 register |
로컬 | 블록 |
예제
설명
다음 예제에서는 변수의 블록, 중첩 및 표시 유형을 보여 줍니다.
코드
// 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;
}
주석
이 예제에는 네 가지 수준의 표시 유형(외부 수준과 세 가지 블록 수준)이 있습니다. 값은 각 문 다음에 있는 주석에 언급된 것처럼 화면에 출력됩니다.
참조
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기