반응형

c언어 함수의 구조와 함수의 형태

반응형

함수의 구조와 함수의 형태에 대해서 알아보겠습니다. 

 

함수란?

수학적인 개념에서의 함수는 두 집합 사이의 관계를 설명하는 수학의 개념이라고 되어있습니다. 하지만 c언어에서의 함수는 미리 만들어 놓은 일종의 프로그램으로 반환 형태(리턴 타입)와 함수의 이름, 매개변수, 함수의 시작, 함수의 반환, 함수의 종료로 이루어져 있습니다.  이전에 사용했던 함수들을 살펴보면 printf함수와 scanf함수가 있습니다. 

 

함수의 형태
1. 반환형이 있고 (O) 매개변수도 있는 함수 (O)
2. 반환형이 있고 (O) 매개변수가 없는 함수 (X)
3. 반환형이 없고 (X) 매개변수가 있는 함수 (O)
4. 반환형이 없고 (X) 매개변수도 없는 함수 (X)

함수의 형태는 크게 4가지로 반환형과 매개변수에 따라서 형태가 달라지게 됩니다. 반환형은 반환받을 값으 형태와 동일하게 설정하고 반환값이 없다면 void로 선언하게 됩니다. 매개변수 또한 값이 없다면 void로 선언하게 됩니다. 

 

1. 반환형과 매개변수가 둘다 있는 함수 

반환형과 매개변수가 둘 다 있는 함수로 반환 형을 int의 hongji 함수를 만들고 매개변수는 int로 전달해주는 소스입니다.  프로그램의 흐름으로 살펴보면

6라인 hongji(1) hongji함수에 인자값을 (1)로 전달하여 함수를 호출합니다.       // 1 전달 

11라인 int hongji(int a)로 선언된 함수가 호출되어  6라인에서 받은 1값을 변수 a에 저장합니다. // 1전달받음  

13라인 printf함수로 전달받은 a값을 출력합니다.  // 1출력 

15라인 printf 함수를 출력합니다.                      // 

17라인 변수 a의 값에 1을 더해줍니다.                // 전달받은 1값에 1을 더함 

18라인 변수 a값을 반환해줍니다.                          // 계산이 완료된 값 2를 호출한 곳으로 반환 시킴

6라인 hongji(1) 호출하고 반환된 값을 받게됩니다.    // 반환값을 받음

 

더보기
#include <stdio.h>


int main(void)
{
	printf("hongji함수의 리턴값 : %d \n", hongji(1));

	return 0;
}

int hongji(int a) {

	printf("전달 받은 a값은 :%d\n", a);

	printf("a값에 1을 더해 리턴 ~ \n");

	a = a + 1;
	return a;

}

 

2. 반환형은 있고 매개변수가 없는 함수

6라인에서 인자값이 없는 () 형태의 hongji함수를 호출합니다. hongji()

11라인 반환형은 있고 매개변수가 없는(void)의 int hongji(void) 함수가 호출되어 실행됩니다.

13라인 int a를 선언하고 정수 123을 a변수에 대입합니다.

15라인 a값을 반환합니다.

6라인 hongji함수에서 반환된 a값(123)을 전달받습니다.  

 

3. 반환형은 없고 매개변수는 있는 함수

12라인에서 hongji(int a, int b)함수에 인자값 1, 2를 전달합니다. 

3라인 전달받은 1, 2를 int a와 int b에 각각 대입합니다. 

5라인 printf함수를 호출해 화면에 출력합니다.

14라인 12라인에서 호출된 함수가 전달받은 인자값이 없어종료 되고 다음 소스인 14라인이 실행됩니다.

 

4. 반환형과 매개변수가 둘다 없는 함수

14라인과 18라인 매개변수 없는 hongji()를 호출하고 hongji 함수가 실행됩니다. hongji 함수에는 printf함수를 사용해 줄을 긋는 출력만하고 반환되는 값 없이 hongji함수가 종료됩니다. 

 

함수를 사용하는 이유

위에서 4가지 형태의 함수들을 만들어 봤습니다. 함수를 만들어 봤는대 함수는 왜 사용할까? c언어로 프로그래밍을 하게되면 지금까지는 main함수 하나를 가지고 모든 내용을 다 다루었습니다. 하지만 만들어야하는것이 점점 생긴다면?? 하나의 함수에서 모든걸 다 하는 것이 아닌 기능별로 나누어 표현하고 필요에 따라 호출하여 사용하는 것이 더욱 편리하기 때문입니다. 

 

 

반응형

댓글

Designed by JB FACTORY