지금까지 작성한 프로그램들은 간단한 방법으로 main() 함수 하나만을 포함하고 있었습니다. 하지만 이외에도 다양한 기능을 하는 함수가 있습니다. 이러한 함수는 사용자가 정의하여 사용할 수 있고 미리 정의된 라이브러리 함수를 호출하여 사용할 수 있습니다. 또는 값을 반환하는 목적 이외에도 작업을 분할하는 용도(프로시저)로 활용이 가능합니다. 따라서 자주 반복되는 작업을 함수로 정의해두면 해당 작업이 필요할 때마다 함수를 호출하여 사용함으로써 반복된 코드를 줄일 수 있고 단순화 시킬 수 있습니다.
■ main() 함수
main() 함수는 프로그램이 실행될 때 운영체제에 의해 가장 먼저 실행되는 특수한 함수로 한 번만 호출이 됩니다.
■ 라이브러리 함수
라이브러리 함수는 전문가가 만들어 놓은 함수입니다. 예를들어서 화면에 출력을 하기 위한 함수로 printf() 함수 사용자 값을 입력 받는 함수인 scanf() 함수도 라이브러리 함수에 해당합니다. 이외에도 많은 함수들이 있기 때문에 사용자 매뉴얼을 통해서 함수의 기능을 잘 이해해야 합니다.
■ 사용자 정의 함수
사용자 정의 함수는 프로그래머가 직접 개발을 하는 함수로서 이 함수의 사용을 위해서는 함수 정의, 함수 호출, 함수 원형 선언이 필요합니다.
- 함수 정의 : 함수의 동작내용을 기술한 함수의 본체
- 함수 호출 : 함수의 입력 내용 및 반환 값의 활용 방법을 표현하는 부분
- 함수 원형 선언 : 함수의 입력 자료형 및 반환 자료형을 명시하여 함수 호출에서 오류가 없었는지 확인하기 위한 부분
함수 정의
함수 정의는 사용자 정의 함수의 동작내용을 기술하는 부분으로서 함수의 동작 내용을 명확하게 표현하기 위해 함수의 반환 자료형, 입력 변수 목록을 명시합니다.
함수 정의 구문 형식 규칙
- 함수 머리는 반환형, 함수 이름, 형식 매개변수 목록으로 구성된다.
- 함수 이름의 생성 규칙은 변수 이름과 같이 식별자 사용 규칙을 따른다.
- 반환형은 반환값과 같은 자료형이어야 한다.
- 형식 매개변수 목록은 여러 개의 변수와 각 변수의 자료형으로 표현하되 변수의 자료형과 변수 이름을 반복하여 기술하며, 콤마(,)를 사용하여 각각을 구분한다.
- 함수 몸체는 중괄호로 시작하여 중괄호로 끝나며, 중괄호 안에 함수가 수행해야할 선언과 문장들이 나열된다.
- 함수의 마지막 문장은 일반적으로 return문 이다.
함수 호출
사용자 정의 함수의 호출은 함수 이름과 실 매개변수로 구성되며 함수가 값을 반환하는 경우에는 반환하는 값을 저장하는 대입문을 사용합니다.
함수 호출 형식 | 함수이름( 실 매개변수, ... , 실 매개변수) |
ex) 입력받은 두 수의 합과 곱을 구하여 출력하는 사용자 정의 함수를 만들라.
#include <stdio.h>
int sum(int x,int y){
return x+y;
}
int mul(int x,int y){
return x*y;
}
int main(void)
{
//입력받은 두 수의 합과 곱을 구하여 출력하는 사용자 정의 함수를 만들라.
int a,b;
printf("두 수 입력 (값을 구분하기 위해 띄어쓰기 사용): ");
scanf("%d %d",&a,&b);
printf("%d+%d=%d\n",a,b,sum(a,b));
printf("%d*%d=%d",a,b,mul(a,b));
}
※ result
두 수 입력 (값을 구분하기 위해 띄어쓰기 사용): 2 8
2+8=10
2*8=16
■ 함수 원형 선언(function prototype declaration)
함수 호출 위치보다 뒤에 함수 정의가 있는 경우, 함수 호출 앞쪽에 함수 원형을 선언을 해야합니다. 함수 원형의 선언은 함수 정의부의 머리 부분과 같은 형식으로 기술하되 마지막에 세미콜론(;)을 추가해야합니다.
함수 선언 형식 | 반환형 함수이름 (형식 매개변수, ... , 형식 매개변수); |
ex) 입력받은 두 수의 합과 곱을 구하여 출력하는 사용자 정의 함수를 만들라. ( 함수 원형 선언을 사용하라)
#include <stdio.h>
int sum(int,int);
int mul(int x,int y);
int main(void)
{
//입력받은 두 수의 합과 곱을 구하여 출력하는 사용자 정의 함수를 만들라.
int a,b;
printf("두 수 입력 (값을 구분하기 위해 띄어쓰기 사용): ");
scanf("%d %d",&a,&b);
printf("%d+%d=%d\n",a,b,sum(a,b));
printf("%d*%d=%d",a,b,mul(a,b));
}
int sum(int x, int y){
return x+y;
}
int mul(int x, int y){
return x*y;
}
※ result
두 수 입력 (값을 구분하기 위해 띄어쓰기 사용): 5 9
5+9=14
5*9=45
'컴퓨터 프로그래밍 > c 언어 (c programming language)' 카테고리의 다른 글
C 언어 - 포인터(Pointer) (0) | 2020.09.27 |
---|---|
C 언어 - 배열(Arrangement) (0) | 2020.09.27 |
C 언어 - 반복문(Loop) (0) | 2020.09.26 |
C 언어 - 조건문 (0) | 2020.09.26 |
C 언어 - 표준 입출력 (0) | 2020.09.26 |
댓글