본문 바로가기
Computer Language/C Language

C언어 함수 정의, 함수 선언, 함수 호출에 대한 정리

by 방구석 임베디드 2022. 6. 29.
반응형

안녕하세요.

오늘도 이어서, 계속 C언어를 이해해 보는 시간을 가지도록 하겠습니다.

오늘은 C언어 함수의 정의, 함수의 선언, 함수의 호출에 대해서 정리해 보는 시간을 가지도록 하겠습니다.

 

C언어를 이해하기 위해서는 먼저, C언어의 기본단위를 아셔야 합니다.

C언어의 기본단위는 바로 '함수'입니다.

 

함수를 살펴보면 입력과 출력이 있습니다.

위의 함수는 y = 3x + 4  입니다.

여기서 입력은 x, 출력은 y 입니다.

 

이것을 c언어 함수로 만들어 보도록 하겠습니다.

아래는 제가 간단히만든 함수의 정의입니다.

int function(int x)
{
	int y = 0;
 	y = 3 * x + 4;
    
 	return y;
}

위에서 함수의 정의를 사용할 경우

함수 앞에 보이는 int는 (int function (int x))

함수의 실행이 끝나면 반환되는 return 값의 type입니다.

C언어는 위와 같이 함수를 정의합니다.

그리고 위의 함수를 호출하여 사용합니다.

호출하여 사용할때는 인자를 전달하는데 결국 아래와 같이 사용이 됩니다.

int main(void)
{
	int x = 3;
	int y = 0;
    
	y = function(x);
	return 0;
}

위의 코드는 우리가 만든 함수를 호출하여 인자를 넣어 사용하고 있는 모습니다.

 

function(x) 는 function(3)을 의미합니다. 

결국 3이라는 인자를 function의 인자로 전달합니다.

입력값을 전달한다고 생각하시면 됩니다.

이렇게 되면 function 이라는 함수는 계산을 다 마치고 

결과값을 반환하여 y에 넣어줍니다.

 

꼭 인자를 전달할 필요는 없습니다.

아래는 인자를 전달하지 않는 함수의 모습입니다.

함수의 선언,

함수의 호출,

함수의 정의 부분을 확인해 주세요.

 

결국 함수의 정의는 함수의 원본형태라고 생각하시면 됩니다.

그리고, 이제 이 함수를 가지고 쓰고 싶습니다.

이럴때, 미리 위에 함수를 선언해 주어야 합니다.

 

위에서 Init_WatchDog이라는 함수에서

DisableWatchdog이라는 함수를 사용할경우,

미리 위에서 이 함수를 선언해 주어야지

컴파일러가 이것을 이해하고 컴파일 에러를 내지 않게 됩니다.

 

그렇다면 지금부터, 간단한 계산기 함수를 만들어 보도록 하겠습니다.

#include <stdio.h>

int addition(int a, int b);
int subtraction(int a, int b);
int multiplication(int a, int b);
int division(int a, int b);

int main(void)
{
	int a = 10;
	int b = 5;

	printf("a + b = %d\n", addition(a,b));
	printf("a - b = %d\n", subtraction(a,b));
	printf("a * b = %d\n", multiplication(a,b));
	printf("a / b = %d\n", division(a,b));
	return 0;
}

int addition(int a, int b)
{
	return a + b;
}

int subtraction(int a, int b)
{
	return a - b;
}

int multiplication(int a, int b)
{
	return a * b;
}

int division(int a, int b)
{
	return a / b;
}

위의 함수는 덧셈, 뺄셈, 곱셉, 나눗셈의 함수를 정의하였고

main 함수에서 함수를 호출하였습니다.

그리고 함수를 사용하기 위해서 미리 함수를 선언하였습니다.

그리고, 

해당 결과는 아래와 같습니다.

결국, 우리가 소프트웨어를 만들때 가장 중요한 것은

가장 기본요소인 함수를 어떻게 나누는가 입니다.

 

함수를 잘 나누고, 모듈화 시키는 것이 바로 소프트웨어 설계의 가장 중요한 요소라고 할 수 있습니다.

그렇기 때문에 저는 코드를 짠다라는 표현 보다는

 

우리는 소프트웨어 건축가라는 표현을 더 좋아합니다.

눈에 보이지 않는 건축물을 설계한다고 해야할까요?

그리고 건물의 창문, 문, 소파, 의자 등등이 바로 작은 함수라고 볼 수 있습니다.

 

이상으로 C언어 함수 정의, 함수 선언, 함수 호출에 대한 정리를 마치도록 하겠습니다.

 

반응형

댓글