티스토리 뷰

안녕하세요 쫑쫑블로그입니다.

C언어에서 함수는 크게 2가지로 나뉩니다. 표준함수와 사용자 함수인데요.

1.표준함수

표준함수는 저희가 기본 문법으로 알고 있던 scanf, printf 등이 포함되어 있습니다.

c언어에서 자주 사용되는 기능을 제작회사에서 미리 만들어 제공하는 함수입니다.

내장함수 또는 라이브러리 함수라고도 합니다. (알면 좋은 정보)

 

2.사용자 함수

프로그래머가 필요에 의해 직접 정의하는 함수

예를 들어본다면 100줄짜리 코딩을 해서 자신이 설정한 이름의 함수를 사용한다고 가정합니다.

실제로 main함수에는 제가 짠 100줄짜리 코딩이 함수로 설정되어 원하는 기능을 수행할 수 있으므로

scanf처럼 정의한 함수 한 줄로 그 100줄짜리 코딩의 결과물을 낼 수 있는 것이죠.

얼마나 중요한지 알겠죠?

 

함수의 정의 : 함수의 기능을 구현하는 것

표준함수(printf, scanf_s)는 정의할 필요가 없습니다.

Why? 표준함수는 이미 정의되어 있기 때문이죠 #include(헤더파일)에 포함되어 있습니다.

 

함수의 호출 : 이미 만들어진 함수를 사용하는 행위를 함수 호출이라고 합니다.

사용자함수는 반드시 정의를 한 후에 호출을 해야 합니다.

함수 인자

일단 먼저 어떤 것이 인자이고 개수는 어떻게 아는지 알려드리겠습니다.

int maria(int num1, int num2, int num3) --à 인자는 3

int maria(int num1, int num2) --à 인자는 2

printf(“hello”); 인자는 1

scanf(“%d”,&num); 인자는 2

무슨 느낌인지 감이 오시나요?

함수의 입력 값은 없을 수도 있고, 여러 개도 가능하다. 사용자의 마음대로 정하면 됩니다.

단지 ‘ , ’ 를 사용하여 구분만 해주신다면 말이죠!

이제 기본적인 형식과 그 의미에 대해 설명 해드리겠습니다.

형식 : 자료형 함수 이름( 함수 인자)

{

함수 내용

}

Int, void 등 이 자료형 형식 인 것이죠. 이는 후에 나오는

함수반환 값에 따라 설정해주시면 됩니다.

Int 함수이름( ) 함수 반환 값 : 정수

void 함수이름( ) 함수 반환 값 : 없다

return 0; : 함수 반환 값은 0이다.

return ; : 함수 반환 값은 없다.

비정상 종료 or 에러의 경우는 일반적으로 return = 음수를 사용합니다.

return -1, return -2, return -3 이 순서대로 사용하는 것이죠.

함수 반환 값(return value);

함수 반환 값이란 int, void 형식을 사용하여 결국 얻어지는 값입니다.

void형식 함수를 사용할 경우 return 값은 없을 수도 있죠.

주의 할 점은 함수 반환 값은 최대 1개만 가능하다는 것 입니다.

 

함수 선언(강조)

함수 호출을 하기위해서는 먼저 함수 형식을 선언해야 합니다..

컴파일러에게 해당 함수를 사용할 것임을 알려주는 행위입니다.(변수와 유사)

표준 함수를 사용할 때는 함수가 선언된 해당 헤더파일을 include 합니다.

Why? 사용자 함수는 그 함수를 호출 했을 경우 미리 컴퓨터가 이 함수에 대해 알고 있어야 합니다.

예로 전자기기 사용설명서를 들자면 10페이지에 모르는 용어가 있는데 100페이지에서 그 용어에 대해 정의하면 설명서를 보는 소비자는 이해하기 어렵게 되겠죠.

다시 함수이야기로 넘어오면 컴퓨터가 모르는(내가 만든) 함수를 사용했다면 컴퓨터는 이해하기 어렵겠죠? 그래서 미리 선언은 해주는 겁니다.

함수의 선언 : Int maria(int num1, int num2); // 주의 : 선언의 경우 함수 마무리( ; )를 꼭 붙혀주어야 합니다.

Int main(void){

return 0;

}

Int maria(int num1, num2){

Return 0;

}

대략적으로 이런 형태입니다.

 

주의 해야 할 점 : 함수의 반환 값이 존재하는 경우,

반환 값과 동일한 자료형의 변수를 사용하여 반환 값을 받도록 해야합니다.

 

프로그램 실행 순서

하나의 프로그램에는 하나의 main()함수가 존재합니다.

main( )함수 첫 라인부터 프로그램이 실행되고 , main( )함수의 return 혹은 마지막 라인을

수행함으로써 프로그램이 종료됩니다.

 

이제 함수를 왜 쓰는 지에 대해 알게 되었을 텐데

예제 한가지만 알려드리고 마무리 하겠습니다.

inchcm로 바꾸거나 평을 평방미터로 바꾸는 함수의 코딩입니다.

#include

float inch(float);

float pah(float);

 

int main() {

char cho;

while(1){

printf("===========================\n");

printf("수행할 프로그램을 선택하세요\n");

printf("---------------------------\n");

printf("A. 인치(inch)를 센티미터로 환산 함수 호출 프로그램\n");

printf("B. 평을 평방미터로 환산하는 함수 호출 프로그램\n");

printf("Q. 프로그램 종료\n");

printf("--------------------------------\n");

printf("알파벳은 A(a), B(b), Q(q)만 허용됩니다.\n");

printf("-------------------------------\n");

printf("알파벳 선택 : ");

scanf_s("%c", &cho);// 인식이 되지않는다.

printf("----------------------------------\n");

if (cho == 'A' || cho == 'a') {

printf("변환하실 값을 입력해주십시오 인치 : ");

int a; scanf_s("%d", &a);

inch(a);

printf("입력하신 %d인치는 %f센치미터 입니다\n", a, inch(a));

}

else if (cho == 'B' || cho == 'b') {

printf("변환하실 값을 입력해주십시오 평: ");

int a; scanf_s("%d", &a);

pah(a);

printf("입력하신 %d평은 %f평방미터 입니다.\n", a, pah(a));

}

else if (cho == 'Q' || cho == 'q') {

break;

}

else { printf("잘못입력하셨습니다.\n"); }

}

return 0;

}

float inch(float num) {

float resuit;

resuit = num * 2.5399;

return resuit;

}

float pah(float num2) {

float resuit;

resuit = num2 * 3.3058;

return resuit;

}

 

이상 포스팅 마치겠습니다.