Post

함수

함수

함수

main에서 A를 호출하고, 그 안에서 B를 호출하고, C를 호출했다고 하자.

  • 그렇다면 C가 종료되고 돌아와야 B가 종료되고 돌아와야 A가 종료된다.
  • A안에서 호출된 다른 함수들은 절대 A보다 나중에 종료될 수 없다.
  • 결국 A안에 있는 모든 함수들이 종료되고 돌아와야 비로소 A가 종료된다.

함수의 이 구조는 마치 자료구조의 스택과 유사하다.
스택은 후입선출

먼저 들어온 애가 먼저 나가는 방식도 있다. 이를 라고 한다. 선입선출, 후입후출


메모리와 코드를 동일시 하면 안된다. 내가 작성한 코드가 곧 그 메모리 영역이 아니다.

  • 코드는 명령어의 집합.
  • 이 명령을 수행했을 때에 그 수행에 맞춰서 동작하고 있는 곳이 바로 메모리 영역이다.

코드의 영역과 메모리 영역을 분리해서 생각해야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>

// 함수
// Factorial
int Factorial(int _iNum)
{
	int iValue = 1;

	for (int j = 0; j < _iNum - 1; ++j)
	{
		iValue *= (j + 2);
	}

	return iValue;
}

int main()
{	
	int iValue = Factorial(4);
	iValue = Factorial(10);

	return 0;
}




  • 함수 모듈화가 중요.
  • 작게작게 쌓아올리기. 설계가 중요.
  • 기능을 세세하게 나눠서 가져다 쓰기 용이하도록 설계하기.
This post is licensed under CC BY 4.0 by the author.