본문 바로가기
카테고리 없음

4. C_함수

by heekng 2021. 1. 19.
반응형
 

함수는 사용자가 미리 정의하여 필요할 때에 불러와 이용할 수 있는 코드를 뜻합니다.

예를 들어 c파일 상단에 #include <stdio.h>를 작성한다면 stdio.h에 정의되어있는 scanf함수를 이용할 수 있는 것과 같습니다.

지금은 코드작성자가 직접 함수를 만들고 이용하는 방법을 알아보겠습니다.


1. 함수 선언하기

함수를 선언하는 기본 형태는 상단에 리턴타입 함수명 (매개변수1, 매개변수2, ...); 를 작성하여 함수가 존재함을 선언하고,

main()아래에 리턴타입 함수명 (매개변수1, 매개변수2, ...){ 문장 } 을 작성하여 함수를 이용할때 내부적으로 진행될 문장을 작성하여 함수선언을 마칩니다.

int numSum(int a, int b); //함수 원형 선언하기

 

int main(int argc, char* argv[]) {

 

int num = numSum(3, 7); //함수 호출하기

printf("두 정수의 합은 %d!", num);

 

return 0;

}

 

int numSum(int a, int b) { //함수 선언하기

int c = a + b;

return c;

}

위와 같이 main위에 함수의 원형을 선언하고, main 아래에 함수를 선언하는 과정으로 함수가 생성되고

main()안에서 해당 함수를 호출하며 매개변수를 정상적으로 입력해준다면

위와 같이 함수에서 값이 리턴되고 main의 문장이 실행됩니다.

위 코드에서 리턴타입을 int로 두엇기 때문에 정수 c를 리턴하였습니다.

하지만 함수를 통해 리턴되는 값이 필요 없다면 리턴타입을 void로 둬서 함수만 실행되게 할 수 있습니다.


2. 다양한 함수의 형태

(1) 위에서는 함수의 원형을 먼저 선언하고, main() 아래에 함수의 내부구조를 선언하였습니다.

이러한 두번의 과정을 거치지 않고 상단에 바로 함수를 선언할 수 있습니다.

int numSum(int a, int b) { //함수 선언하기

printf("두 정수의 합은 %d!", a + b);

}

 

int main(int argc, char* argv[]) {

 

numSum(3, 7); //함수 호출하기

 

return 0;

}

위와 같이 함수를 선언해도 정상적으로 함수가 실행되지만 사용자의 가독성이 떨어지고 불편해지기 때문에 함수 원형선언, 함수 선언 두가지 과정으로 함수를 생성합니다.

(2) [c++의 경우] 함수의 오버로드

c++의 경우엔 같은 이름의 함수더라도 매개변수의 타입이 다름을 이용하여 중복하여 함수를 선어할 수 있습니다.

int numSum(int a, int b); //함수 원형 선언하기

float numSum(float a, float b); //동일한 이름의 함수 오버로드

 

int main(int argc, char* argv[]) {

 

float num = (float)numSum(3.7, 7.1); //함수 호출하기

printf("두 수의 합은 %f !", num);

 

return 0;

}

 

int numSum(int a, int b) { //함수 선언하기

int c = a + b;

return c;

}

float numSum(float a, float b) { //동일한 이름의 함수 오버로드

float c = a + b;

return c;

}

위와 같이 정수 두개를 매개변수로 받는 함수 numSum과 동일한 이름이지만 실수 두개를 매개변수로 받는 함수를 중복하여 선언, 이용할 수 있습니다.

반응형