2.4.2 함수 호출
함수 호출(function call)은 현재 함수(프로그램 시작 시점에는 main 함수)의 실행을 잠시 멈추고 호출문으로 지정한 함수로 제어권을 넘긴다. 예제에서는 다음과 같이 printf란 함수를 호출했다.
getting-started.c
17 printf("element %zu is %g, \tits square is %g\n",
18 i,
19 A[i],
20 A[i]*A[i]);
함수 호출문에서 함수 이름뿐만 아니라 인수(argument)도 함께 지정할 때가 많다. 예제에서는 i, A[i], A[i]*A[i]와 같이 인수 목록이 길게 나열되어 있다. 이렇게 지정된 인수의 값은 호출하는 함수로 전달된다. 예제에서는 printf를 이용하여 인수의 값을 화면에 출력한다. 여기서 중요한 것은 ‘값’이다. i도 인수의 일부이지만 printf에서 i 값 자체를 바꿀 수는 없다. 이런 호출 방식을 값 호출(call by value)이라 한다. 참고로 호출된 함수가 변수의 값을 변경할 수 있는 방식인 참조 호출(call by reference)을 지원하는 프로그래밍 언어도 있다. C 언어는 참조 호출 방식을 제공하지 않지만, 변수의 주소를 알아내서 포인터로 전달하는 방식으로 제어권을 다른 함수로 넘기는 메커니즘을 지원한다. 자세한 사항은 이 책의 후반부에서 소개한다.