본문 바로가기
프로그래밍/C

[C] 5. C언어의 "함수"

by iwbap 2024. 6. 12.
728x90

C 언어 학습: 함수

C 언어에서 함수는 특정 작업을 수행하는 코드의 묶음입니다. 함수는 코드의 재사용성과 가독성을 높이는 데 중요한 역할을 합니다. 이번 글에서는 함수 정의와 호출, 반환값과 매개변수, 재귀 함수에 대해 알아보겠습니다.


1. 함수 정의와 호출

함수를 정의한다는 것은 함수의 이름, 반환형, 매개변수, 그리고 함수가 수행할 작업을 지정하는 것을 의미합니다. 함수 호출은 정의된 함수를 실제로 사용하는 것을 의미합니다.

 

함수 정의의 기본 구조는 다음과 같습니다.

[c]
 
반환형 함수이름(매개변수 목록) {
    // 함수가 수행할 작업
    return 반환값;
}
 
 

예제

[c]
 
#include <stdio.h>

// 함수 정의
void sayHello() {
    printf("Hello, World!\n");
}

int main() {
    // 함수 호출
    sayHello();
    return 0;
}
 

위의 예제에서 sayHello 함수는 반환형이 void이고 매개변수가 없습니다. main 함수에서 sayHello 함수를 호출하면 "Hello, World!" 메시지가 출력됩니다.


2. 반환값과 매개변수

함수는 호출된 곳으로 값을 반환할 수 있으며, 호출 시에 필요한 데이터를 매개변수를 통해 전달받을 수 있습니다.

 

반환값이 있는 함수의 정의 예제

[c]
 
#include <stdio.h>

// 두 정수를 더하는 함수
int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(3, 4); // 함수 호출 및 반환값 저장
    printf("Result: %d\n", result);
    return 0;
}
 

위의 예제에서 add 함수는 두 개의 정수형 매개변수를 받아서 이들의 합을 반환합니다. main 함수에서 add 함수를 호출하고 그 반환값을 result 변수에 저장한 후 출력합니다.

 

 

매개변수가 있는 함수의 예제

[c]
 
#include <stdio.h>

// 환영 메시지를 출력하는 함수
void greet(char name[]) {
    printf("Hello, %s!\n", name);
}

int main() {
    greet("Alice"); // 함수 호출
    return 0;
}
 

위의 예제에서 greet 함수는 문자열 매개변수를 받아서 환영 메시지를 출력합니다.


3. 재귀 함수

재귀 함수는 함수가 자기 자신을 호출하는 함수입니다. 재귀 함수는 반복적인 작업을 수행할 때 유용하며, 특히 알고리즘 문제 해결에 자주 사용됩니다. 그러나 종료 조건을 잘 설정하지 않으면 무한 루프에 빠질 수 있습니다.

 

재귀 함수의 예제

[c]
 
#include <stdio.h>

// 팩토리얼을 계산하는 재귀 함수
int factorial(int n) {
    if (n <= 1) {
        return 1; // 종료 조건
    } else {
        return n * factorial(n - 1); // 재귀 호출
    }
}

int main() {
    int number = 5;
    int result = factorial(number); // 함수 호출
    printf("Factorial of %d is %d\n", number, result);
    return 0;
}
 

위의 예제에서 factorial 함수는 입력된 정수 n의 팩토리얼을 계산합니다. factorial 함수는 n이 1 이하일 때 1을 반환하고, 그렇지 않으면 자기 자신을 호출하여 n * factorial(n - 1)을 계산합니다.


이번 글에서는 C 언어의 함수에 대해 알아보았습니다. 함수는 프로그램의 구조를 개선하고 코드의 재사용성을 높이는 데 매우 유용합니다. 다음 시간에는 배열과 문자열에 대해 자세히 다뤄보겠습니다. C 언어 학습에 많은 도움이 되길 바랍니다. Happy Coding!

728x90

'프로그래밍 > C' 카테고리의 다른 글

[C] 7. C언어의 "포인터"  (0) 2024.06.13
[C] 6. C언어의 "배열과 문자열"  (0) 2024.06.12
[C] 4. C언어의 "조건문과 반복문"  (0) 2024.06.12
[C] 3. C언어의 "연산자"  (0) 2024.06.12
[C] 2. C언어의 "기본 문법"  (0) 2024.06.12