오늘은 함수군요. 다른 말로는 부 프로그램, 서브루틴
함수는 일을 하는 단위입니다.
생긴건
int function_name(int a, int b)
{
// TODO
return 0;
}
리턴이 필요 없는 action 위주의 함수들도 있지만
대부분의 경우 action에 대해서도 정상 작동을 했는지 아닌지에 대한 error를 돌려주도록 권고합니다.
물론 하나의 entry point(c로 치면 mainI())에 다 때려 박아도 되지만
굳이 왜 함수를 써서 귀찮게 할까요?
가장 큰 이유는 프로그램의 재사용을 위해서 입니다.
재사용은 동일한 루틴을 값만 바꾸어서 사용하는 것이고
프로그램 곳곳에서 동일하게 입력되는 값만 바꾸어서 사용이 가능하다면
반복적으로 코드를 쓰지 않아도 되서
실행파일의 용량을 줄이는데에도 용이합니다.
다만 성능 향상을 위해
(함수는 다른 곳에 있는 녀석이라 현재 실행 정보를 램에 저장하고 새로운 파일을 읽고 실행하는 개념입니다)
inline 키워드를 통해 함수를 풀어 사용할 수 도 있습니다.
+
피보나치 수열을 통해 "재귀함수"를 구현할때 많이 듣는 이야기로 "스택이 넘친다는 것"을 들을수 있는데
스택은 우리가 사용하는 변수들이 저장되는 곳입니다.
즉, 무리한 함수의 호출은 메모리 부족을 야기할 수 있으나 웬만해서는 문제 될일은 없으니 걱정없으셔도 됩니다
(단, 마이컴의 경우 메모리가 16kb 보다 적은 녀석도 수두룩해서 조심해야 합니다)
+
가끔.. inline으로 풀어주면... 희한하게 코드 전체 사이즈가 줄어드는 마법이....
원인은 저도 잘 모르겠습니다. ㄷㄷ