본문 바로가기
C 언어 프로그래밍/함수

사용자 정의 함수

by 프밍샘 2020. 6. 16.

함수

함수(Function)는 프로그램을 구성하는 기본 요소로, 어떤 특정한 일을 수행하도록 필요한 문장을 모아 놓은 프로그램 단위입니다. 프로그램 내에서 반복 실행하여야 할 명령어를 함수로 만들어 놓으면 필요할 때마다 함수를 호출하여 사용할 수 있습니다. 함수의 종류에는 사용자가 원하는 기능을 직접 정의하여 사용하는 사용자 정의 함수(User Defined Function)와 사용자가 많이 사용하는 기능을 미리 함수로 만들어 C언어의 기본 제공 함수로 내장되어 있는 라이브러리 함수(Library Function)가 있습니다. 이번 장에서는 사용자 정의 함수에 대해 알아보겠습니다.

 

 

 

함수 이용의 장점

  1. 함수를 사용하면 프로그램이 간결해집니다.
  2. 작성한 함수는 재사용할 수 있습니다.
  3. 프로그램이 모듈화 되므로 수정 및 편집이 용이합니다.

 

 

 

사용자 정의 함수

사용자 정의 함수는 C언어에서 미리 제공되는 것이 아니라 사용자가 직접 정의하여 사용하는 함수를 말합니다. 사용자 정의 함수는 선언-호출-정의의 과정을 거치며, 함수를 호출하기 전에 먼저 정의되어 있다면 함수 선언은 하지 않아도 됩니다.

 

  • 함수명은 변수명과 같이 알파벳(대소문자), 숫자, _(밑줄)을 이용하여 작성하고 함수명 맨 앞에 숫자는 올 수 없습니다. 함수명은 중복하여 작성할 수 없습니다.
  • 함수의 return문은 함수를 종료하고 호출한 곳으로 돌아갑니다. return문이 없으면 함수의 모든 문장을 실행하고 호출한 곳으로 돌아갑니다.
  • 함수의 return(반환)값이 없으면 void라 쓰고, 생략하면 int로 간주합니다.
  • 함수의 return(반환)값은 하나만 올 수 있으며, 상수, 변수 또는 수식을 반환할 수 있습니다.
  • 함수의 인수가 없으면 괄호 안에 void를 사용하며, 생략할 수도 있습니다.

 

사용자 정의 함수의 기본적인 구조는 다음과 같습니다.

반환_자료형 함수명(인수들);		//함수 선언

int main()
{
	함수명(인수들);			//함수 호출
}

반환_자료형 함수명(인수들)		//함수 정의
{
	명령문;
}

 

 

함수를 선언-호출-정의하는 과정을 알아보기 위해 두 정수의 합을 구하는 sum이라는 함수를 만들어 보겠습니다. 

#include <stdio.h>

int sum(int x, int y);	//함수 선언

int main()
{
	int s;
    
	s=sum(3, 2);		//함수 호출
	printf("%d", s);
	
	return 0; 
}

int sum(int x, int y)		//함수 정의
{
	return x+y;
}

 

 

 

 

함수의 선언

반환_자료형 함수명(인수들);
int sum(int x, int y);

함수의 선언에서는 함수의 자료형과 함수의 이름을 선언합니다. 두 정수의 합을 구하는 함수이기 때문에 인수는 두 정수가 되며 각각 int x, int y로 선언하였습니다. 또한 두 정수의 합은 함수가 실행되고 나서 반환되어져야 하는 값이므로 반환_자료형 역시 int로 함수명 sum 앞에 작성합니다. 문장끝의 세미콜론(;)은 반드시 있어야 합니다. 

 

 

함수의 선언 시에 인수들의 변수명을 생략할 수 있습니다.

#include <stdio.h>

int sum(int, int);		//함수 선언

int main()
{
	int s;
    
	s=sum(3, 2);		//함수 호출
	printf("%d", s);
	
	return 0; 
}

int sum(int x, int y)		//함수 정의
{
	return x+y;
}

 

함수를 선언하지 않고 정의-호출 형태로 사용하려면 함수의 정의가 main함수 전에 위치하면 됩니다. 예시는 아래와 같습니다.

#include <stdio.h>

int sum(int x, int y)		//함수 정의
{
	return x+y;
}

int main()
{
	int s;
    
	s=sum(3, 2);		//함수 호출
	printf("%d", s);
	
	return 0; 
}

 

 

 

 

함수의 호출

int main()
{
	함수명(인수들);		//함수 호출
}
int main()
{
	int s;
    
	s=sum(3, 2);		//함수 호출
	printf("%d", s);
	
	return 0; 
}

함수의 호출(call)은 main함수에서 정의된 함수를 실행하는 것을 말합니다. 호출된 함수의 return(반환)값을 저장하려면 대입연산자 =을 이용하여 변수에 대입합니다. sum함수에게 인수들을 넘겨주는 방법은 ( )안에 합을 구하고자 하는 두 정수의 값을 작성하면 됩니다.

 

 

 

 

함수의 정의

반환_자료형 함수명(인수들)	//함수 정의
{
	명령문;
}
int sum(int x, int y)		//함수 정의
{
	return x+y;
}

함수명은 변수명과 같이 함수의 실행 내용을 짐작할 수 있는 이름을 사용하여 작성합니다. 함수명 앞에는 반환될 값의 자료형을, ( )안에는 함수에 사용될 인수들의 자료형과 변수명을 작성합니다. return(반환)값은 main함수에게 넘겨줄 값으로 이 예제에서는 두 정수의 합인 x+y인 수식을 반환하였습니다.

 

 

 

 

함수의 예제

 

(1단계) 예제1 : 두 정수의 합을 구하는 함수

#include <stdio.h>

int sum(int x, int y);	

int main()
{
	int s;
    
	s=sum(3, 2);	
	printf("%d", s);
	
	return 0; 
}

int sum(int x, int y)	
{
	return x+y;
}

 

출력 결과

 

 

 

 

(1단계) 예제2 : 구구단을 출력하는 함수

#include <stdio.h>

void multi_table(int);

int main()
{
	int num;
	
	printf("구구단 몇 단을 출력할까요?");
	scanf("%d", &num);
	
	multi_table(num);
	
	return 0; 
}

void multi_table(int x)
{
	int i;
	
	printf("====%d단====\n", x);
	for(i=1;i<10;i++)
	{
		printf("%d * %d = %d\n", x, i, x*i);
	}
	
}

 

출력 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

함수-사용자 정의 함수

'C 언어 프로그래밍 > 함수' 카테고리의 다른 글

[C언어] 랜덤 함수, 난수 생성 함수, rand()  (0) 2020.06.25
라이브러리 함수  (0) 2020.06.16

댓글