함수의 정의와 선언
1. 함수를 정의하는 이유
- 모듈화에 의한 프로그램의 질 향상이 가능
- 유지 보수 및 확장의 용이성
- 문제 해결의 용이성 : "Divide and Conquer!"
2. 4가지 형태의 함수
- 전달 인자 有, 반환 값 有
- 전달 인자 有, 반환 값 無
- 전달 인자 無, 반환 값 有
- 전달 인자 無, 반환 값 無
3.main 함수 다시 보기 : 함수의 기본 형태
4. 함수의 정의와 선언
4-1.
전달 인자와 반환 값, 둘 다 있는 함수
4.2 함수 호출 과정의 이해
#include <stdio.h> int Add(int i, int j) { int result = i + j; return result; } int main(void) { int d; d = Add(3, 4); printf("%d \n", d); return 0; } |
|
4.3 함수 선언의 필요성
컴파일러의 특성상, 함수는 호출되기 전에 정의되어야 한다.
4.4 함수 선언의 의미
이후에 정의될 함수에 대한 정보 제공
4.5 변수의 범위(scope)
* 변수의 특성에 따른 분류
지역 변수(Local Variable)
중 괄호 내에 선언되는 변수
* 전역 변수(Global Variable)
함수 내에 선언되지 않는 변수
* 정적 변수(Static Variable)
함수 내부, 외부 모두 선언 가능
* 레지스터 변수(Register Variable)
선언에 제한이 많이 따름
4.5.1 지역 변수의 접근 범위
지역 변수는 선언 된 함수 내에서만 접근 가능
int fct_one(void) { int one=0; return 0; } |
<- 범위 1 |
int fct_two(void) { int two=0; int one=0; return 0; } |
<- 범위2 |
* 지역 변수의 메모리상 존재 기간
- 1단계
int fct_one(void) { int one=10; return 0; } int fct_two(void) { int one=20; int two=30; return 0; } int main(void) { int val=10; fct_one(); fct_two(); return 0; } |
|
- 4단계
4.5.2 전역 변수
static 변수
함수 내부 및 외부에 선언 가능하다.
한번만 초기화된다 : 전역 변수의 특징
함수 내부에서 선언될 경우 함수 내에서만 접근이 가능하다 : 지역 변수의 특징
예제 static_val.c
보다 빠르게! register 변수
/* static_val.c */
#include <stdio.h>
void fct(void);
int main(void)
{
int i;
for(i=0; i<5; i++)
fct();
return 0;
}
void fct(void)
{
int val=0; // static int val=0;
val++;
printf("%d ",val);
}