본문 바로가기
Program/C

14. C언어 사용자 정의 함수

by Murciellago 2021. 11. 28.
반응형
SMALL

이 장에서는 예제를 통해 C언어 프로그래밍에서 사용자 정의 함수를 만드는 방법을 설명합니다.

 

함수는 특정 작업을 수행하는 코드 블록이다.

 

C언어를 사용하면 필요에 따라 함수를 정의할 수 있다. 이러한 함수를 사용자 정의 함수라고 합니다.

 

예를들면 원을 만들고 반지름과 색상에 따라 색상을 지정해야 한다고 가정하면 문제를 해결하기 위해 두가지 함수를 만들 수 있다.

 

-  createCircle() 기능

- color() 기능

 

예) 사용자 정의 함수

두개의 정수를 더하는 예이다. 작업을 수행하기 위해 사용자 정의하는 함수를 지정.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int addNumbers(int a, int b);         // function prototype
 
int main()
{
    int n1,n2,sum;
 
    printf("Enters two numbers: ");
    scanf("%d %d",&n1,&n2);
 
    sum = addNumbers(n1, n2);        // function call
    printf("sum = %d",sum);
 
    return 0;
}
 
int addNumbers(int a, int b)         // function definition   
{
    int result;
    result = a+b;
    return result;                  // return statement
}
 
 

 

1. 함수 프로토타입

  - 함수 프로토타입은 단순히 함수의 이름, 매개변수 및 반환 유형을 지정하는 함수의 선언이다. 

    함수 본문을 포함하지 않습니다.

    함수 프로토타입은 함수가 나중에 프로그램에서 사용될 수 있다는 정보를 컴파일러에 제공한다.

 

  1) 함수 프로토타입의 구분

 

예)

returnType functionName(유형1 인수1, 유형2 인수2, 유형3 인수3 .......);

 

위에서 본 것을 int addNumbers(int a, int b); 라는 예시에서 컴파일러에 다음 정보를 제공하는 함수 프로토타입은 다음과 같다.

 

- 함수의 이름은 addNumbers()

- 함수의 반환 유형은 int

- 유형의 두 인수 int함수에 전달된다.

 

사용자 정의 함수가 main() 함수보다 먼저 정의되어 있으면 프로토타입의 함수는 필요하지 않다.

 

 

2. 함수 호출

- 프로그램의 제어는 사용자정의 함수를 호출하여 전달된다.

 

1) 함수 호출 구문

 

예)

functionName(인수1, 인수2, 인수3 .......);

 

위의 예시에서 함수 호출은 함수 addNumbers(n1, n2);  내부의 문을 사용하여 main()문에 수행된다.

 

 

3. 기능정의

함수 정의에는 특정 작업을 수행하기 위한 코드 블록이 포함됩니다. 이 예에서는 두 개의 숫자를 더하고 반환한다.

 

1) 함수 호출 구문

 

예)

returnType functionName(유형1 인수1, 유형2 인수2, 유형3 인수3  ...........);

{

         // 함수 본체

}

 

- 함수가 호출되면 프로그램의 제어가 함수 정의로 이전됩니다. 그리고 컴파일러는 함수 본문 내부의 코드를 실행하기 시작한다.

 

 

4. 함수에 인수 전달

프로그래밍에서 인수는 함수에 전달된 변수를 나타냅니다. 위의 예에서 두 개의 변수n1 그리고 n2 함수 호출 중에 전달된다.

매개변수 NS 그리고 NS함수 정의에서 전달된 인수를 허용하고 이러한 인수를 함수의 형식 매개변수라고 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int addNumber(int a, int b);
 
int main()
{
 
sum = addNumbers(n1, n2);
 
}
 
int addNumbers(int a, int b)
{
 
}
 
 

 

함수에 전달된 인수 유형과 형식 매개변수는 일치해야 합니다. 그렇지 않으면 컴파일러에서 오류가 발생합니다.

만약에 n1 char 유형이며, a또한 char 유형이어야 합니다. 만약에 n2 부동 소수점 유형일 경우 변수 b 또한 float 유형이어야 합니다.

인수를 전달하지 않고 함수를 호출할 수도 있습니다.

 

 

5. 반품명세서

return  문은 함수 실행을 종료하고 호출하는 함수에 값을 반환한다. 프로그램 제어는 return문 다음에 호출하는 함수로 전달된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int addNumber(int a, int b);
 
int main()
{
 
sum = addNumbers(n1, n2);
 
}
 
int addNumbers(int a, int b)
{
 
return result;
 
}
 
cs

 

위의 예에서의 값은 result 변수는 주 함수로 반환된다. sum은 main()함수의 변수 값으로 할당된다.

 

6. 반환 명세서의 구문

 

예)

return (expression);

 

예)

return a;

return(a+b);

 

함수에서 반환되는 값의 유형과 함수 프로토타입 및 함수 정의에 지정된 반환 유형이 일치해야 한다.

 

 

 

 

반응형
LIST

'Program > C' 카테고리의 다른 글

16. C언어 재귀함수  (0) 2021.11.28
15. C언어 프로그래밍의 사용자 정의 함수 유형  (0) 2021.11.28
13. C언어 전처리기와 매크로  (0) 2021.11.17
12. C언어 goto 문  (0) 2021.10.20
11. C언어 switch 문  (0) 2021.10.20

댓글