Page 34 -
P. 34

은 ‘값’이다. i도 인수의 일부이지만 printf에서 i 값 자체를 바꿀 수는 없다. 이런 호출 방식을 값
               호출(call by value)이라 한다. 참고로 호출된 함수가 변수의 값을 변경할 수 있는 방식인 참조 호출
               (call by reference)을 지원하는 프로그래밍 언어도 있다. C 언어는 참조 호출 방식을 제공하지 않지

               만, 변수의 주소를 알아내서 포인터로 전달하는 방식으로 제어권을 다른 함수로 넘기는 메커니즘
               을 지원한다. 자세한 사항은 이 책의 후반부에서 소개한다.



               2.4.3 함수 리턴
               main의 마지막 문장은 return이다. 이 문장은 main 함수가 원래 호출된 자리로 돌려보낸다. 앞의

               예제에서 main을 선언할 때 int 값을 리턴한다고 했으므로 return은 main을 호출한 곳으로 int 타
               입 값을 전달해야 한다. 예제에서는 EXIT_SUCCESS라는 값을 지정했다.

               printf 함수를 정의한 코드는 직접 볼 수 없지만 여기 나온 것처럼 return문이 정의되어 있다는
               것은 상식적으로 알 수 있다. 17줄에서 이 함수를 호출하면 main에 있는 문장의 실행을 잠시 멈추
               고, printf 함수를 실행하다가 return을 만나면, 좀 전에 멈췄던 main 문장으로 돌아가서 실행을

               재개한다.

                  그림 2-4 프로그램 실행 과정
                                                    int printf(char const fmt[], ...)
                               int main ( void ) {
                                 // Declarations
                                 double A [ 5 ] = {  호출
                                   [ 0 ] = 9 . 0 ,
                          호출       [ 1 ] = 2 . 9 ,
                                   [ 4 ] = 3 . E+25 ,
                                   [ 3 ] = . 0 0 0 0 7 ,
                                 } ;
                 프로세스 구동  main();  // Doing some work                      C 라이브러리
                               for ( size_t i = 0 ; i < 5 ; ++i ) {
                                 printf ("element %zu is %g, \tits square is %g\n",
                                         i ,
                                         A [ i ] ,
                          리턴
                                         A [ i ]*A [ i ] ) ;
                                 }
                                 return EXIT_SUCCESS ;  리턴
                               }
                              프로그램 코드                   return something;
                                                    }







         38





     모던c.indd   38                                                                           2021-12-29   오후 2:32:59
   29   30   31   32   33   34   35