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
   25   26   27   28   29   30   31   32   33   34   35