1. C언어의 함수
- 표준 함수
- 사용자 정의 함수
2. 함수를 사용하는 이유는?
- 반복적인 프로그래밍을 피할 수 있음.
- 모듈화로 인해 코드 가독성이 좋아짐.
- 유지보수에 용이.
3. 함수의 정의
int sum(x,y)
{
}
=> 반환자료형 int // 함수가 모든 작업을 마치고 반환하는 데이터의 타입 명시.
함수이름 sum // 함수 호출을 위한 이름 명시
매개변수 목록 (x,y) // 함수 호출 시 전달되는 인수의 값을 저장할 변수들을 명시
함수몸체 { } // 함수의 고유 기능을 수행하는 명령문의 집합.
// 함수 호출 시에는 여러 개의 인수를 전달할 수 있지만, 반환값은 1개를 넘지 못한다.
인수나 반환값이 하나도 없는 함수도 존재 가능.
* 함수의 원형 선언
반환타입 함수이름 (매개변수타입);
함수를 사용한 예시
#include <stdio.h>int num(int,int); // 함수의 원형 선언int main(void){int result;result=num(5,3); // 함수의 호출printf("두 수 중 더 큰수는 %d입니다.\n", result);result=num(3,1);printf("두 수 중 더 큰수는 %d입니다.\n", result);result=num(7,5);printf("두 수 중 더 큰수는 %d입니다.\n", result);return 0;}int num(int num1, int num2) // 함수의 정의{if(num1>=num2){return num1;}else{return num2;}}4. 변수의 유효 범위- 지역 변수(local variable) // 블록 내에서 선언된 변수, 초기화 x시 쓰레기값.- 전역 변수(global variable) // 외부에서 선언된 변수, 자동 0으로 초기화.- 정적 변수(static variable) // 단 한 번만 초기화.- 레지스터 변수(register variable)5. 메모리의 구조- 코드(code) 영역- 데이터(data) 영역- 스택(stack) 영역- 힙(heap) 영역6. 재귀 호출(recursive call)- 함수 내부에서 함수가 자기 자신을 또다시 호출하는 행위.int rSum(int n)
{
if (n == 1) // n이 1이면, 그냥 1을 반환함.
{
return 1;
}
return n + rSum(n-1); // n이 1이 아니면, n을 1부터 (n-1)까지의 합과 더한 값을 반환함.
}