[C언어] 함수

2025. 6. 14. 23:36·개발이야기/C언어
728x90

 

함수는 프로그램을 구조적으로 만들고, 중복을 줄이며, 코드를 재사용할 수 있게 해주는 기본 단위입니다. 이 문서에서는 함수의 정의, 선언, 호출 방식과 매개변수 및 반환값 처리까지 C 언어 기준으로 자세히 설명합니다.


1. 함수란 무엇인가?

  • 함수는 코드의 조각으로, 특정 작업을 수행하기 위한 독립된 블록입니다.
  • 복잡한 프로그램을 작고 관리하기 쉬운 단위로 나누기 위해 사용됩니다.
  • 코드 중복을 피하고, 재사용성을 높이며, 모듈화된 설계를 가능하게 합니다.
  • 함수는 0개 이상의 매개변수를 받을 수 있으며, 값을 반환할 수도 있습니다.

2. 함수의 구성 요소

C 언어에서 함수는 다음의 구성요소로 이뤄집니다:

 함수 선언 (함수 프로토타입)

  • 함수가 어떤 이름, 반환형, 매개변수를 가지는지를 컴파일러에게 알려줍니다.
  • 함수 정의보다 먼저 작성되어야 합니다 (또는 헤더 파일로 분리).

 함수 정의

  • 실제로 함수가 어떻게 동작하는지 구현하는 부분입니다.

 함수 호출

  • 정의된 함수를 사용하여 작업을 수행합니다.

3. 함수 정의 형식과 매개변수 구성

C 언어에서 함수는 "어떤 값을 받아 어떤 동작을 하고 어떤 값을 반환하는가"를 기준으로 정의됩니다. 함수의 기본 구조는 다음과 같습니다:

<반환타입> <함수이름>(<타입> <변수명>, <타입> <변수명>, ...) {
    // 함수 본문 (실행할 코드)
    return 반환값; // 반환타입이 void일 경우 생략 가능
}
  • 괄호 안에는 0개 이상의 매개변수 목록이 들어갑니다.
  • 각 매개변수는 타입과 변수 이름으로 구성되며, 쉼표로 구분됩니다.
  • 매개변수가 없는 경우 () 또는 (void)를 사용합니다.

함수 정의 예시

int add(int a, int b) {
    return a + b;
}

📌 위 예시 설명:

  • int: 함수의 반환 타입 (정수형 값 반환)
  • add: 함수 이름
  • (int a, int b): 정수형 매개변수 두 개를 받음
  • return a + b;: a와 b의 합을 반환

함수의 구조를 명확하게 작성하면 호출하는 쪽에서도 어떤 값을 전달하고 어떤 결과를 기대할 수 있는지 쉽게 파악할 수 있습니다. 따라서 반환 타입과 매개변수 목록은 함수 인터페이스에서 가장 중요한 부분입니다.


4. 반환값이 없는 함수 (void)

void는 반환값이 없음을 의미합니다. 주로 단순 출력이나 동작 수행 함수에 사용됩니다.

예시

#include <stdio.h>

void say_hello() {
    printf("Hello, world!\n");
}

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

5. 함수 선언(프로토타입)과 정의 분리 예시

// 선언 (보통은 헤더 파일에 위치)
int multiply(int x, int y);

// 정의 (보통은 소스 파일에 위치)
int multiply(int x, int y) {
    return x * y;
}

int main() {
    int result = multiply(3, 4);
    printf("3 x 4 = %d\n", result);
    return 0;
}

6. 반환값이 있는 함수 예시

float average(float a, float b) {
    return (a + b) / 2.0f;
}

7. main 함수의 역할

  • 모든 C 프로그램은 main() 함수부터 실행이 시작됩니다.
  • int main()은 정수값(종료 상태)을 운영체제에 반환합니다.
int main() {
    // 프로그램 실행 코드
    return 0;
}

8. 함수 사용 시 주의할 점

  • 함수는 정의되기 전에 선언되어야 합니다.
  • 반환 타입을 생략하지 마세요. 생략하면 기본형(int)으로 간주되어 예기치 않은 동작을 유발할 수 있습니다.
  • 매개변수 타입도 반드시 지정해야 합니다 (C89/C90 기준).

9. 요약 정리

구분설명

함수 선언 컴파일러에게 함수 시그니처를 미리 알려줌
함수 정의 함수가 수행할 동작 구현
반환 타입 void, int, float, bool 등 지정 가능
매개변수 0개 이상 가능. 각 인자의 타입 명시 필요
main 함수 프로그램 시작점. int main() 권장

이 문서는 C 언어의 함수 문법을 완벽하게 이해하고, 함수 기반 구조화를 실무에 활용하는 데 도움을 주기 위해 작성되었습니다. 함수는 코드 품질과 유지보수성을 동시에 향상시키는 강력한 도구입니다.

728x90

'개발이야기 > C언어' 카테고리의 다른 글

[C언어] 배열  (0) 2025.06.15
[C언어] 스택  (0) 2025.06.15
[C언어] 부울(Boolean) 값과 조건식  (0) 2025.06.14
[C언어] 조건문과 반복문  (0) 2025.06.14
[C언어] 언어 표준 입출력 함수  (1) 2025.06.14
'개발이야기/C언어' 카테고리의 다른 글
  • [C언어] 배열
  • [C언어] 스택
  • [C언어] 부울(Boolean) 값과 조건식
  • [C언어] 조건문과 반복문
Study & Stack
Study & Stack
하루하루 공부하며 개발 지식을 쌓아가는 공간입니다. 자료구조, 알고리즘, C언어, 시스템 프로그래밍까지 공부한 내용을 ‘Stack’처럼 쌓고 공유합니다.
  • Study & Stack
    Study & Stack
    Study & Stack
  • 전체
    오늘
    어제
    • 목차
      • 크래프톤정글이야기
        • 정글의기록
        • TIL - WIL
      • 개발이야기
        • C언어
        • 파이썬
        • 코딩테스트
        • CSAPP
      • 협업툴
        • git
      • 나의 이야기
        • 내돈내산
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Study & Stack
[C언어] 함수
상단으로

티스토리툴바