본문 바로가기
C_language

c언어 함수 선언과 정의

by 헬로제이콥 2024. 8. 27.

 

 

 

 

 

 

1. 함수의 개념 설명

함수는 "작업을 하는 작은 기계"라고 생각하면 됩니다. 우리가 수학에서 계산기를 사용해서 덧셈을 한다고 생각해보세요. 함수는 특정 작업을 수행하는 코드 블록입니다.

  • 함수 선언: 이 함수가 무엇을 하는지, 어떤 입력을 받을 수 있는지, 어떤 결과를 반환하는지를 알려주는 것이에요.
  • 함수 정의: 실제로 그 함수가 어떤 작업을 수행하는지를 구현한 부분이에요.
#include <stdio.h>

// 함수 정의
void sayHello() {
    printf("Hello, World!\n"); // 이 함수가 실행되면 "Hello, World!"를 출력합니다.
}

int main() {
    sayHello(); // sayHello 함수를 호출합니다.
    return 0;
}

--------------------------------------------------------------------------------
팁!!
함수를 위에 써야 컴파일러가 에러없이 함수를 실행해요.
그러나 여러사정으로 main 함수 아래로 이동해야 하는 경우는
아래 예제 처럼  void sayHello(); 쓰면 에러가 나지 않습니다.
--------------------------------------------------------------------------------

 

팁!! 함수를 위에 써야 컴파일러가 에러없이 함수를 실행해요. 그러나 여러사정으로 main 함수 아래로 이동해야 하는 경우는 아래 예제 처럼 void sayHello(); 쓰면 에러가 나지 않습니다.

 

#include <stdio.h>

// 함수 선언
void sayHello(); // sayHello 함수가 있을 것이라고 컴퓨터에 알려줍니다.

int main() {
    sayHello(); // sayHello 함수를 호출합니다.
    return 0;
}

// 함수 정의
void sayHello() {
    printf("Hello, World!\n"); // 이 함수가 실행되면 "Hello, World!"를 출력합니다.
}
  • 위의 예제에서 sayHello는 함수의 선언과 정의를 보여줍니다.
  • sayHello 함수는 "Hello, World!"를 화면에 출력합니다.

 

2. 매개변수와 반환값

개념 설명

  • 매개변수: 함수가 작업을 수행하는 데 필요한 입력값이에요. 예를 들어, 덧셈을 하려면 두 숫자가 필요하겠죠?
  • 반환값: 함수가 작업을 끝내고 주는 결과값이에요. 덧셈을 하면 결과로 합이 나옵니다.

 

코드 설명

#include <stdio.h>

// 함수 선언
int add(int a, int b); // 두 개의 정수를 받아서 정수를 반환하는 add 함수

int main() {
    int result = add(5, 3); // 5와 3을 더한 결과를 result 변수에 저장합니다.
    printf("Result: %d\n", result); // 결과를 출력합니다.
    return 0;
}

// 함수 정의
int add(int a, int b) {
    return a + b; // 두 매개변수 a와 b를 더한 값을 반환합니다.
}
  • add 함수는 두 개의 숫자를 받아서 그 합을 반환합니다.
  • main 함수에서 add(5, 3)을 호출하면, 5와 3의 합인 8을 반환받아 출력합니다.

 

C 언어로 이름과 나이를 입력받아 출력하는 함수 만들기

코드 설명

#include <stdio.h>

void print_info(char name[], int age) {
    printf("이름: %s\n", name);
    printf("나이: %d세\n", age);
}

int main() {
    char name[20];
    int age;

    printf("이름을 입력하세요: ");
    scanf("%s", name);

    printf("나이를 입력하세요: ");
    scanf("%d", &age);

    print_info(name, age);

    return 0;
}

 

C 언어로 두 수를 곱하고, 더하고, 빼고, 나누는 함수 만들기

코드 설명

#include <stdio.h>

void calculate(int a, int b) {
    int sum = a + b;
    int difference = a - b;
    int product = a * b;
    float quotient = (float)a / b; // 나눗셈 결과를 실수로 저장하기 위해 형 변환

    printf("두 수의 합: %d\n", sum);
    printf("두 수의 차: %d\n", difference);
    printf("두 수의 곱: %d\n", product);
    printf("두 수의 나눗셈: %.2f\n", quotient); // 소수점 둘째 자리까지 출력
}

int main() {
    int num1 = 10, num2 = 20;
    calculate(num1, num2);
    return 0;
}

 

3. 재귀 함수

개념 설명

재귀 함수는 자신을 호출하는 함수입니다. 마치 거울을 보고 있을 때 거울 속의 거울이 계속 반복되는 것처럼요.

  • 기본 개념: 재귀 함수는 작업을 더 작은 부분으로 나누어 반복합니다. 종료 조건이 있어야 무한 루프에 빠지지 않습니다.

코드 설명

#include <stdio.h>

// 함수 선언
int factorial(int n); // n의 팩토리얼을 계산하는 함수

int main() {
    int number = 5;
    int result = factorial(number); // 5의 팩토리얼을 계산합니다.
    printf("Factorial of %d is %d\n", number, result);
    return 0;
}

// 함수 정의
int factorial(int n) {
    if (n == 0) { // 종료 조건
        return 1; // 0!은 1입니다.
    } else {
        return n * factorial(n - 1); // n! = n * (n-1)!
    }
}
  • factorial 함수는 자신을 호출하여 n의 팩토리얼을 계산합니다.
  • factorial(5)는 5 * factorial(4)를 호출하고, factorial(4)는 4 * factorial(3)를 호출하는 식으로 진행됩니다.
  • 종료 조건이 되어 n이 0이 되면, 1을 반환하여 재귀 호출이 종료됩니다.

 

요약

  1. 함수 선언과 정의: 함수가 무엇을 하는지 선언하고, 실제 작업을 구현하는 부분입니다.
  2. 매개변수와 반환값: 함수가 필요한 입력값(매개변수)을 받고, 작업 후 결과값(반환값)을 줍니다.
  3. 재귀 함수: 자기 자신을 호출하여 문제를 해결하는 함수입니다. 종료 조건이 필요합니다.