관리 메뉴

공부 기록장 💻

[C언어] 함수(function)의 정의, 선언, 호출 / 함수의 매개변수, 반환값, 함수 원형 본문

# Language & Tools/C

[C언어] 함수(function)의 정의, 선언, 호출 / 함수의 매개변수, 반환값, 함수 원형

dream_for 2021. 1. 25. 21:55

함수의 종류에는 두 가지가 있다.

사용자가 직접 정의하여 만드는 '사용자 정의 함수',

그리고 자주 사용되어 프로그래머들이 미리 만들어놓은, 컴파일러에서 제공되는 '라이브러리 함수'가 있다.

기본적으로 사용하는 printf(), scanf() 함수들은 <stdio.h> 헤더 파일 내에 이미 정의되어 있는 라이브러리 함수들 중 일부이다.

사용자 정의 함수는 특정한 기능을 수행하는, 말그대로 프로그래머 개인이 직접 작성한 함수를 의미한다.

사용자 정의 함수를 어떻게 작성하는지, 간단히 정리해보고자 한다.

 

 

 

함수의 정의(defnition)

 

함수엔 헤더(header)와 몸체(body) 부분이 존재한다.

헤더 영역에는, 함수를 호출하여 얻는 결과값의 반환형, 그리고 함수의 이름, 괄호에는 매개변수의 목록(반환형과 매개 변수명)을 작성해준다.

몸체 영역에는, 함수가 수행하는 기능의 코드를 작성해준다.

 

함수는 반환값이 있는 경우가 있고, 없는 경우가 있다.

있는 경우에는 결과값의 자료형을 작성하고, 몸체의 마지막 부분에 return 문장을 작성해주어야 한다.

없는 경우에는 반환형은 void로 작성하고, return 문장은 작성하지 않아도 된다.

해당 함수를 호출한 곳에서 값을 필요로 하지 않는 경우에 반환형이 없는 함수를 작성한다.

 

 

예) 1부터 n까지의 합을 더하는 기능을 하는 함수

int sum(int n) {

	int result = 0;
	
	for (int i = 1;i <= n;i++)
		result += i;
	
	return result;
}

 

함수의 헤더 부분은 int sum(int n) 이다.

int는 반환값의 자료형이고, sum은 함수의 이름, (int n)은 매개변수를 의미한다.

매개변수는 함수에 따라 존재하지 않을 수도 있고, 한 개, 혹은 두 개 이상일 수도 있다.

매개변수의 자료형과 변수명을 각각 써주어야 한다.

 

헤더 부분 이후, 중괄호 {} 안의 내용을 함수의 몸체, 바디라고 한다.

함수가 수행하는 특정한 기능의 내용을 작성하는 부분이다.

해당 sum() 함수는 1부터 n까지의 합을 결과값으로 반환해야 하기 때문에 정수형 변수 result를 사용했다.

반복문이 끝난 후 얻는 result 변수의 최종적인 값이 반환값으로 사용된다.

 

 

 

 

함수의 호출(call)

 

호출 방법: 함수의 이름()

 

특정한 기능을 수행하는 함수를 실행하거나, 해당 함수를 실행하여 어떤 결과값을 얻기 위해서는

이 함수를 호출해야 한다. (=실행하게 이름을 불러주어야 한다.)

함수를 호출하는 방법은 함수의 이름과 괄호를 써주면 된다.

 

반환값과 매개 변수 값이 존재하는 경우에는 호출할 때 자료형이 모두 일치해야 한다.

 

 

main()함수에서 n을 입력받아, 위의 sum()함수를 호출하여 결과 값을 얻어보자. 

int main(void) {

	int n;

	printf("정수 입력: ");
	scanf_s("%d", &n);

	printf("결과값은 %d \n", sum(n));

	/*
	int result=sum(n);
	printf("결과값은 %d \n", result);
	*/

	return 0;
}

 

함수를 호출하는 곳에서 실제로 입력받아 sum()함수로 넘겨주는 변수 n의 값을 '인수' 또는 '인자'라고 한다.

인수는 함수의 기능에 따라 존재할 수도, 존재하지 않을 수도 있다.

위의 방법은 함수를 호출하여 얻는 정수값을 바로 출력하였지만,

/**/ 주석 내부와 같은 방법으로, 변수를 따로 설정하여 함수의 결과값을 저장하는 방법도 존재한다.

 

 

 

 

함수의 선언(declaration)

 

main() 함수 이후에 사용할 함수들을 미리 컴파일러에게 정보를 제공하는 것을

함수의 원형(function prototype)이라고 한다.

함수를 선언하는 것은 매우 간단하다.

함수의 반환형, 함수명, 매개변수 목록을 작성하면 된다.

이 때,  매개변수의 이름은 필수가 아니지만, 자료형은 필수적으로 포함이 되어 있어야 한다.

 

#include <stdio.h>

int sum(int);
int main(void) {

	int n;

	printf("정수 입력: ");
	scanf_s("%d", &n);

	printf("결과값: %d\n", sum(n));

	return 0;
}

int sum(int n) {
	int result = 0;
	
	for (int i = 1;i <= n;i++)
		result += i;

	return result;
}
728x90
반응형
Comments