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