int always_one() ## 1 이라는 int 값을 내놓지만 딱히 입력해 줄 인수는 필요 없음.
{
return 1 ;
}
void print_what(int x, char y) ## y 라는 문자를 x 번 출력해주는 함수
{ ## x 와 y 를 인수로 입력함
int i;
for (i=0; i<x; i++)
{
printf("%c\n", y);
}
return;
}
void print_hello() ## 굳이 헬로 함수를 불러서 헬로를 출력하다니!
{
printf("hello");
return;
}
int recursive_func(int x) ## 정말 많이 알려진 재귀함수의 대표적인 예시
## 수열의 합을 구하는 경우.
## 수열적 특성과 같이 그 흐름이 파악될 경우 재귀함수가
유용
{
if (x != 1)
{
return x + recursive_func(x - 1);
}
else return 1;
}
: 프로그래밍 언어 내에서 호출하는 함수는 일정 메모리를 잡아먹는다.
~ 혼공컴운에 의하면 이 또한 시스템 호출(system call)의 경우.
~ 호출에 의한 OS 서비스를 요청할 경우 해당 상태에 대한 정보가 그 횟수만큼 늘어날 것이고, 이는 프로세스의 상태를 기록하는 정보의 크기가 커져 메모리를 많이 사용하게 되는 것이 아닐까?
: 이렇게 호출이 지속되면 메모리도 그만큼 잡아먹히고, 결국 오버플로우가 발생하여 프로그램이 강제적으로 종료되는 것.
표준 라이브러리 함수
: 프로그래밍 언어 및 헤더 파일에 이미 구현되어 있는 기본적인 함수들.
: main 함수, printf , scanf 등등
사용자 정의 함수
: 사용자가 직접 정의하고 사용하는 사적 함수
- 함수 선언
: 컴파일러에게 '이러한 이름의 함수를 쓸 것이다' 라고 미리 알려주는 과정.
: 선언의 경우, 매개변수의 변수명은 생략해도 OKAY. 자료형만 적어도 OKAY.- 함수 정의
: 함수의 구체적인 기능을 명시.
: 실제 코드로, 실제 기능을 구현- 함수 호출
: 정의내린 함수를 main 함수 내에서 사용하는 것.
: 값을 호출하는 경우도 있고~ (int, char func....), 없는 경우도 있고~ (void func)