[C언어 강좌] #20 - 함수 호출과 흐름
함수의 흐름에 대해 알아봅시다.
c언어로 프로그램을 작성할때 코드는 위에서부터 아래로 흐른다고 했습니다.
위와같이 작성하면 정상적으로 작동되겠죠. 하지만 hello함수각 main 아래에 있으면 어떻게될까요?
위와같이 오류가 나게됩니다. 오류가 나지 않더라도 경고같은게 띄워질겁니다.
위에서부터 아래로 읽어나가기때문에 hello를 호출하는부분에서는 아직 hello가 무엇인지 모르기 때문입니다.
그렇기때문에 위에서 hello가 있다는것을 먼저 알려줘야합니다.
이렇게 함수의 원형을 먼저 선언해두면 본체가 뒤에있더라도 정상적으로 컴파일됩니다.
그리고 위에서부터 아래로 흐른다고 말했지만 함수를 호출하면 그 함수가 있는곳의 코드가 실행됩니다.
메인함수는 프로그램의 출발점이라고 했습니다. main함수에서 시작하여 6,7번째 줄을 실행하고 hello가 호출되어 hello함수가 있는 2번째줄에 있는 코드가 실행됩니다. 그리고 hello함수가 끝난후에는 다시 원래 있던 7번째 줄로 돌아와 실행됩니다.
이말은 즉 hello함수에 있는 코드가 7번째 줄로 복사, 붙여넣기 된것처럼 실행되는게 아닙니다.
만약 복사 붙여넣기 식으로 코드가 바뀌는것이라면 위에있는 코드는 정상적으로 실행됐을겁니다.
그렇다고 a를 아래로 내리면 정상적으로 작동될까요?
저번에 배운 지역변수를 기억하시고 계셨다면 안된다는걸 바로 아셨을겁니다.
main함수와 hello함수도 다른 지역으로 구분되죠. 그렇다고 지역변수가 나쁜것도 아닙니다.
오히려 장점도 많이 있습니다. 자기 자신을 다시 호출하는 재귀함수에서도 지역변수가 매우 유용하게 활용됩니다.
그리고 메모리관리면에서도 더 좋습니다.