Page 30 -
P. 30
● A: main의 정의 안에서만 보인다. 즉, A의 스코프는 선언을 시작하는 8줄부터 가장 안쪽
{...} 블록을 닫는 24줄까지다.
● i: 가시성(visibility)이 가장 낮다(가시 범위가 가장 좁다). i를 선언한 for 구문에 바인딩되어
16줄의 선언문부터 for 구문의 {...} 블록 마지막 문장인 21줄까지다.
● main: {...} 블록에 담겨 있지 않기 때문에 선언문부터 파일의 끝까지가 스코프다.
C
첫 번째와 두 번째 같은 스코프를 블록 스코프(block scope) 라 부른다. 스코프가 {...} 블록으로
제한되기 때문이다. 세 번째에 나온 main처럼 {...} 블록으로 감싸지 않은 스코프를 파일 스코프
C
(file scope) 라 하고, 파일 스코프에 속한 식별자를 흔히 글로벌(global)(전역) 식별자라 부른다.
2.3 정의
일반적으로 선언은 식별자가 가리키는 오브젝트의 종류만 지정하고, 구체적인 값이나 오브젝트의
C
위치는 지정하지 않는다. 이러한 역할은 정의(definition) 가 담당한다.
TAKEAWAY 2.5 선언은 식별자를 지정하고, 정의는 오브젝트를 지정한다.
뒤에서 자세히 다루겠지만 실제로는 다소 복잡한 과정이다. 지금은 일단 변수를 항상 초기화한
다고 가정한다. 초기화(initialization)란 선언 과정에 나올 수 있는 구문으로서, 선언 대상인 오브
젝트의 초깃값을 지정한다. 예를 들어 다음과 같이 변수 i를 선언하면서 초깃값을 0으로 지정할
수 있다.
size_t i = 0;
C 언어에서는 이렇게 선언에 초기자(initializer)(이니셜라이저)를 함께 사용하는 방식으로 식별자에
오브젝트를 정의할 수 있다. 다시 말해 변수의 값을 저장할 공간을 제공하도록 컴파일러에게 지시
한다.
TAKEAWAY 2.6 오브젝트는 초기화할 때 정의된다.
다음과 같이 앞에서 본 표현에 값을 담을 수 있다.
그림 2-2 size_t i = 0;을 배열로 나타냄
i [size_t 0]
34
모던c.indd 34 2021-12-29 오후 2:32:58