강좌 & 팁
글 수 2,412
2013.05.12 17:01:22 (*.233.153.72)
44346
C언어로 프로그램을 작성하다 보면 간과하는 것이 있습니다. 함수를 호출할 때 입력되는 인수가 어느쪽부터 전달하느냐 하는 것입니다. 일반 상수 일 때에는 관계 없지만, 함수가 한 개 이상이라면 문제가 될 수 있습니다. 에를 들어 아래 코드에서는 main() 함수에서 printf()를 호출하면서 fun_1st()와 fun_2nd()의 값을 요구하고 있습니다.
#include <stdio.h> static int ndx_a = 0; int fun_1st( void) { ndx_a++; } int fun_2nd( void) { return ndx_a; } int main( void) { printf( "main() : fun_1st()= %d fun_2nd= %d\n", fun_1st(), fun_2nd()); }
fun_1st()와 fun_2nd()가 차례로 인수로 입력되어 있는데 어느쪽 함수가 먼저 실행될까요? 타이핑 순서에 따라 fun_1st()가 실행되고 fun_2nd()가 실행될 것 같습니다. 그렇다면 printf()로 실행된 결과는 모두 1이 될 것입니다.
]$ ./a.out main() : fun_1st()= 1 fun_2nd= 1
그러나 실제로 실행해 보면 결과가 전혀 다릅니다.
]$ ./a.out main() : fun_1st()= 1 fun_2nd= 0
func_2nd()의 반환 값이 fun_1st() 실행 전의 ndx_a 값인 0 입니다. 즉, C언어에서는 함수 인수를 왼쪽에서 오른쪽이 아닌 오른쪽에서 왼쪽 순서로 인수를 전달합니다.