-
함수란 ? 특정 작업을 수행하는 코드의 집합이라고 할 수 있다.
함수의 기본 요소
출력 형태 함수 이름 입력 형태
int main (void)
{ -함수의 시작
함수의 기능
} -함수의 종료
함수의 형태 네 가지
출력 형태가 있으면 1 없으면 0
입력 형태가 있으면 1 없으면 0
1- 11형태
int sum(int x, int y)
{
int result=0;
result=x+y;
return result;
}
출력 형태
있음(int) =>1
입력 형태
있음(int x, int y) =>1
해석
x, y를 입력받아 sum() 함수의 기능을 처리하고 int형으로 출력
특이점
출력 형태가 있어서 함수 내에서 반드시 return 문을 사용해야 한다
2- 10형태
int input(void)
{
int num=0;
scanf("%d",&num);
return num;
}
출력 형태
있음(int) =>1
입력 형태
없음(void) =>0
해석
입력받는 값 없이 input() 함수의 기능을 처리하고 int 형으로 출력
특이점
출력 형태가 있어서 함수 내에서 반드시 return 문을 사용해야 한다
3- 01형태
void print(int x)
{
int a=x;
printf("%d',a);
return;
}
출력 형태
없음(void) =>0
입력 형태
있음(int x) =>1
해석
값 하나를 입력받아 printf() 함수의 기능을 처리하고 출력은 하지 않는다.
특이점
출력 형태가 void이므로 함수 내에 return 문이 없어도 됩니다.
4- 00 형태
void output(void)
{
printf("hello");
printf("world");
return;
}
있음(int) =>1
출력 형태
없음(void) =>0
입력 형태
없음(void) =>0
해석
입력받는 값 없이 output() 함수의 기능을 처리하고 출력은 하지 않는다
특이점
출력 형태가 void이므로 함수 내에 return 문이 없어도 됩니다.
함수 적용 방법
함수의 정의 => 함수의 호출
ex)
함수의 선언 => 함수의 호출 => 함수의 정의
ex)
함수의 선언을 했기 때문에 함수의 호출에서 위에 함수가 있다고 판단해서 함수의 동작이 정상적으로 수행된다. 선언을 통해 함수의 개수를 쉽게 분석할 수 있고, 대략적으로 기능을 분석 할 수 있기 때문에, 가장 일반적인 방법으로 사용된다.
변수의 종류와 범위
-지역 변수(Local Variable) : main() 함수, 조건문, 반복문의 중괄호 내부와 함수의 매개 변수로 사용되는 변수.
초기화를 하지 않으면 쓰레기 값이 저장됨
지역 변수의 메모리 생성 시점 : 중괄호 내에서 초기화할 때
지역 변수의 메모리 소멸 시점 : 중괄호를 탈출할 때
-전역 변수(Global Variable) : 전역변수와는 다르게 중괄호 외부에 선언되는 변수
초기화는 상수여야 하고, 초기화를 하지 않아도 자동으로 0이 저장됨.
전역 변수의 메모리 생성 시점 : 프로그램이 시작될 때
전역 변수의 메모리 소멸 시점 : 프로그램이 종료될 때
-정적 변수 ( Static ) : 전역 변수처럼 프로그램이 종료되지 않는 한 메모리가 소멸되지 않고, 특별히 초깃값을 지정하지 않아도 자동으로 0을 가진다. (반드시 상수로 초기화)
ex) static int num;
초기화는 딱 한 번만 진행됨.
함수의 내부, 조건문, 반복문 등과 같이 중괄호가 있는 지역에서 전역 변수의 기능을 갖고 싶을 때 사용합니다.
정적 지역 변수의 메모리 생성 시점 : 중괄호 내에서 초기화될 때
정적 지역 변수의 메모리 소멸 시점 : 프로그램이 종료될 때
-외부 변수(Extern) : 의미대로 외부 파일에 선언된 변수를 참조하여 사용하는 변수.
ex) extern int num1; // 외부 변수 선언 : 다른 파일에 있는 int num1을 참조
-레지스터 변수(Register) : 레지스터에 변수를 할당하여 값을 저장하는 변수.
처리속도가 빠르다는 장점이 있지만, 수가 제한되어 있어서 모자랄 수 있다.
메모리의 생성과 소멸이 빈번한 변수들을 레지스터 변수로 사용하면 효율적이다.
ex)반복문의 횟수를 검사하는 변수
코드 영역, 스택 영역, 데이터 영역, 힙 영역
코드 영역 - 프로그램의 실행 코드 또는 함수들이 저장되는 영역
스택 영영 - 함수 호출에 의한 매개 변수와 지역변수 그리고 함수, 반복문, 조건문 등의 중괄호 네부에 정의된 변수들이 저장되는 여역
데이터 영역 - 전역 변수와 정적 변수가 저장되는 영역
힙 영역 - 프로그래머가 필요에 의해서 동적으로 메모리를 할당하는 변수들이 저장되는 영역
재귀 함수(Recursive Function) : 함수 내에서 자기 자신을 호출하는 함수
return 문을 이용한 재귀 호출
ex ) 팩토리얼을 계산하는 재귀 함수