C Language

C언어 사용자 정의 함수

567Rabbit 2024. 6. 19. 11:07

라이브러리 함수는 외부 라이브러리의 일부로 제공되는 함수이고 반대로,

 

사용자 정의 함수는 프로그래머가 특정 작업을 수행하기 위해 직접 작성하는 함수이다.

 

 

ex)

// 두 수 중에서 큰 수를 반환하는 함수

#include <stdio.h>

int get_max(int a, int b) {
    if(a > b) return(a);
    else return(b);

}

int main(void) {
    
    int x, y;

    printf("두 개의 정수를 입력하세요: ");
    scanf("%d %d", &a, &b);
    
    printf("두 수 중에서 큰 수는 %d입니다\n", get_max(x, y));

    return 0;
}

 

// 정수를 입력받는 함수

#include <stdio.h>

int get_integer() {
    int number;
    printf("정수를 입력하세요: ");
    scanf("%d", &number);
    return number;
}

int add(int x, int y)
{
	return x + y
}

int main(void) {
    
    int x = get_integer();
    int y = get_integer();
    
    int sum = add(x, y)
    printf("두 수의 합은 %d입니다.\n", sum);

    return 0;
}

 

// 팩토리얼 함수 예제

#include <stdio.h>

int factorial(int n) {
    
    long result = 1;
    
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

int main(void) {
    int n;

    printf("정수를 입력하세요: ");
    scanf("%d", &n);

    printf("%d! = %d\n", n, factorial(n));

    return 0;
}

 

 

 

 

 

함수 원형(function prototyping ) = 함수의 프로토타이핑

 

: 컴파일러에게 함수에 대하여 미리 알리는 것이다.

 

- 함수의 정의가 함수 호출보다 먼저 오면 함수 원형을 정의하지 않아도 된다. ** -> 실무

#include <stdio.h>

// 함수 프로토타입 선언
int add(int a, int b);

int main() {
    int num1 = 10;
    int num2 = 20;

    // 함수 호출
    int result = add(num1, num2);
    printf("더한 결과: %d\n", result);

    return 0;
}

// 함수 정의
int add(int a, int b) {
    return a + b;
}

 

- C 언어에서 함수는 먼저 선언되지 않으면 호출할 수 없다.

 

- 함수가 호출되는 위치가 함수의 정의보다 앞서면 컴파일러는 해당 함수를 알 수 없기 때문에 오류가 발생한다.

 

- 이를 해결하기 위해 함수 프로토타입을 사용하여 컴파일러에게 함수의 존재를 미리 알린다.

 

- 함수 프로토타입 선언은 컴파일러가 함수 호출을 인식하고 올바르게 처리할 수 있도록 도와준다.

 

- 특히, 함수가 사용되는 위치가 함수의 정의보다 앞설 때 유용하다.