-
함수의 정의와 선언c언어 기초 2017. 3. 28. 17:42
1. 함수를 정의하는 이유
- 모듈화에 의한 프로그램의 질 향상이 가능
- 유지 보수 및 확장의 용이성
- 문제 해결의 용이성 : "Divide and Conquer!"
2. 4가지 형태의 함수
- 전달 인자 有, 반환 값 有
- 전달 인자 有, 반환 값 無
- 전달 인자 無, 반환 값 有
- 전달 인자 無, 반환 값 無
- 입력이 없는 경우 int foo(void)- 출력이 없는 경우 void foo(int)- 입력과 출력이 모두 없는 경우 void foo(void )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;
}
- 2단계- 3단계- 4단계
4.5.2 전역 변수
- 프로그램 어디에서나 접근이 가능한 변수- 특정 영역(함수, 반복문...)에 속하지 않는다.- 프로그램이 종료될 때까지 존재전역 변수의 또 다른 특징- 같은 이름의 지역 변수에 의해서 가려지기도 한다.static 변수
함수 내부 및 외부에 선언 가능하다.
한번만 초기화된다 : 전역 변수의 특징
함수 내부에서 선언될 경우 함수 내에서만 접근이 가능하다 : 지역 변수의 특징
예제 static_val.c
보다 빠르게! register 변수
int main(void){int a ;register int b; // 레지스터 변수 b 선언. . . . ./* 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);
}
'c언어 기초 ' 카테고리의 다른 글
1차원 배열 (0) 2017.03.30 재귀 함수 (0) 2017.03.28 for/무한루프/continue/break문 (0) 2017.03.22 do - while문 (0) 2017.03.22 switch에 의한 선택 실행 (0) 2017.03.20