함수
필요한 입력을 받아 원하는 어떤 기능을 수행한 후 결과를 반환하는 프로그램 단위
→ 일종의 블랙박스 모델
: 내부 코드를 몰라도 사용이 가능함
- 진입점 함수
: 프로그램이 시작될 때 운영체제에 의해 호출됨
: 프로그래머가 작성하지만 호출하지는 않음
int main(void){
}
- 라이브러리 함수
: 입출력과 같은 고유의 기능을 제공함
: 이미 코드가 만들어져 있어 라이브러리 헤더를 포함하고 호출하면 됨
#include <stdio.h>
char ch;
scanf("%c", &ch);
printf("%c", ch);
- 사용자 정의 함수
: 프로그래머가 직접 정의하고 호출
: 프로그램에서 특정 기능을 제공하는 코드 부분을 묶어 함수로 만들어두고 사용함
int add(int x, int y){
retury x+y;
}
printf("%d", add(10, 20));
★ 사용자 정의 여부 / 반환값과 인자 유무 / 인자(매개변수) 종류에 따라 함수 구분 가능 ★
Benefits?
- 코드를 함수로 한 번만 작성해두면 반복해서 작성할 필요가 사라짐
→ 여러 번 호출해서 사용 가능
- 코드가 중복되지 않아 간결하고 알아보기 쉬움
- 한 번 작성해둔 코드를 여러 번 사용하므로 코드의 재사용성이 높음
- 기능 위주로 함수를 작성해서 사용하기 때문에 프로그램의 모듈화가 증대됨
- 함수 코드를 수정하더라도 함수를 호출하는 부분은 수정할 필요가 없어 프로그램을 유지 보수하기 쉬움
Process?
- 함수의 선언(함수 원형, prototype / signature)
: 함수에 대한 정보(리턴형, 함수 이름, 매개변수 목록) 제공
→ 매개변수의 이름은 생략 가능
→ 매개변수의 데이터형만 콤마(,)로 나열
→ 일반적으로 소스 파일 시작 부분에 넣어줌
반환형 함수이름(매개변수형, ...);
double get_area(double radius);
★함수를 호출하기 위해서는 먼저 함수가 정의되어 있어야 함 ★
- 함수의 정의 = 함수 머리(header) + 함수 몸체(body)
: 리턴형, 함수 이름, () 안에 매개변수 목록을 써준 다음 {} 안에 실제로 함수가 수행할 내용 기술
→ 매개변수 목록은 데이터형과 매개변수가 한 쌍이며, 하나 이상인 경우 콤마(,)로 나열
→ 매개변수가 없을 때는 void라고 적거나 비워둠
★ return형을 생략하면 int로 간주함 ★
반환형 함수 이름(매개변수 목록, ...)
{
명령;
명령;
...
[return 반환값;]
}
double get_area(double radius){
const double pi = 3.14;
return pi * radius * radius;
}
- 함수의 호출
: 앞에서 선언되거나 정의된 함수 이용
: 인자를 넘겨주고 리턴 값을 받아올 수 있음
→ 함수 정의는 한 번만 작성하고 필요한 만큼 여러 번 호출해서 사용
→ 함수 이름 다음에 ()를 쓰고, () 안에 함수의 인자 작성
→ 함수를 호출하는 쪽과 정의는 서로 데이터를 주고 받음
- 인자도 반환값도 없는 경우
함수이름();
#기본 모습
void function(void){
명령;}
#호출
func();
- 인자는 있고 반환값은 없는 경우
함수이름(인자목록);
#기본 모습
void func(int a, double b, int c){
명령;}
#호출
func(23, 12.45, 56)
- 인자는 없고 반환값은 있는 경우
변수 = 함수 이름();
#기본 모습
int func(void){
명령;
return 56;}
#호출
int x;
x=func();
- 인자도 반환값도 없는 경우
변수 = 함수 이름(인자 목록);
#기본 모습
char func(int a, double b){
명령;
return 'b'}
#호출
x = func(1, 3.4);
'Language > C' 카테고리의 다른 글
[ C ] [ 함수 연습 문제 ] 양수 / 음수 여부 출력 프로그램 (0) | 2021.10.26 |
---|---|
[ C ] [ 함수 연습 문제 ] 이름 출력 프로그램 (0) | 2021.10.26 |
[ C ] [ 중첩 반복문 연습 문제 ] 삼각형 출력 프로그램 (0) | 2021.10.25 |
[ C ] [ 중첩 반복문 연습 문제 ] 알파벳 반복 출력(사각형) 프로그램 (0) | 2021.10.25 |
[ C ] [ 중첩 반복문 연습 문제 ] 숫자 반복 출력(사각형) 프로그램 (0) | 2021.10.25 |