C언어 초급 - 2장: C 프로그램의 구조 (2.1 C 프로그램의 기본 구조)

2025. 2. 23. 16:23프로그래밍 언어/C

2.1 C 프로그램의 기본 구조

C 프로그램은 특정한 구조를 가지고 있으며, 모든 C 프로그램은 필수적으로 헤더 파일 포함, main() 함수 정의, 반환문(return)을 포함해야 합니다.
이를 이해하기 위해 가장 기본적인 C 프로그램인 "Hello, World!" 예제를 살펴보겠습니다.

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

위 프로그램은 "Hello, World!"라는 문장을 화면에 출력하는 간단한 C 프로그램입니다.
이제 프로그램의 각 구성 요소를 자세히 살펴보겠습니다.


1. #include <stdio.h>의 의미

1.1 #include 지시문

C 프로그램에서는 특정 기능을 사용하기 위해 헤더 파일(Header File)을 포함해야 합니다.
#include는 전처리기 지시문(Preprocessor Directive)으로, 컴파일 전에 헤더 파일을 포함하라는 의미를 가집니다.

즉, #include <stdio.h>는 C 표준 입출력 라이브러리인 stdio.h를 포함하는 역할을 합니다.

1.2 stdio.h란?

stdio.h(Standard Input Output Header)는 표준 입출력 관련 함수를 제공하는 헤더 파일입니다.
대표적인 기능으로는 화면에 출력하는 printf(), 입력을 받는 scanf() 등이 있습니다.

1.3 stdio.h를 포함하지 않으면?

아래와 같은 코드에서 #include <stdio.h>를 제거하면 컴파일 오류가 발생합니다.

int main() {
    printf("Hello, World!\n");  // 오류 발생
    return 0;
}

오류 메시지 예시 (컴파일러에 따라 다를 수 있음):

error: implicit declaration of function 'printf' [-Wimplicit-function-declaration]

이 오류는 printf() 함수가 어디에서 정의되었는지 알 수 없기 때문입니다.
따라서 #include <stdio.h>를 반드시 추가해야 합니다.


2. main() 함수의 역할

2.1 main() 함수란?

모든 C 프로그램은 반드시 main() 함수를 포함해야 합니다.
main() 함수는 프로그램이 실행될 때 가장 먼저 호출되는 함수(Entry Point)이며, C 프로그램의 시작 지점입니다.

2.2 main() 함수의 기본 구조

int main() {
    // 프로그램의 실행 코드
    return 0;
}

2.3 main() 함수의 역할

  1. 프로그램 실행 시작점
    • 프로그램이 실행되면 main() 함수부터 실행됩니다.
  2. 프로그램의 흐름 제어
    • main() 함수 내부에서 작성된 코드가 순차적으로 실행됩니다.
  3. 반환값(Return Value) 처리
    • 프로그램이 실행을 마친 후 운영체제에 종료 상태를 반환합니다.

2.4 main() 함수의 반환값

main() 함수의 반환값은 int(정수형) 타입이며, 프로그램 종료 시 운영체제에 상태 값을 반환합니다.

반환값을 가지는 main() 함수

int main() {
    return 0; // 프로그램이 정상적으로 종료됨을 운영체제에 알림
}

반환값이 없는 main() 함수

C90 표준 이전에는 void main()도 사용되었지만, 현재 C 표준에서는 main() 함수의 반환값을 반드시 int로 지정해야 합니다.

// 올바르지 않은 예제 (컴파일러에 따라 경고 또는 오류 발생)
void main() {
    printf("Hello, World!\n");
}

위 코드는 일부 컴파일러에서 실행될 수도 있지만, C 표준에 맞지 않으므로 사용하지 않는 것이 좋습니다.


3. return 0;의 의미

3.1 return 0;란?

return 0; 문장은 main() 함수가 실행을 마친 후 운영체제(OS)에 프로그램의 종료 상태를 알리는 역할을 합니다.

int main() {
    return 0; // 프로그램이 정상 종료되었음을 알림
}

이 문장이 실행되면 프로그램이 종료되며, 운영체제는 이를 감지하고 정상적으로 프로그램이 끝났음을 확인합니다.

3.2 반환값의 의미

운영체제는 main() 함수의 반환값을 통해 프로그램이 정상 종료되었는지 여부를 판단합니다.

반환값 의미
0 정상 종료 (Success)
1, -1, 기타 오류 발생 (Error)

예제: 오류 반환값 사용

int main() {
    printf("프로그램 실행 중 오류 발생!\n");
    return 1;  // 오류 코드 반환
}

이처럼 return 1; 또는 return -1;을 사용하면 프로그램이 비정상적으로 종료되었음을 알릴 수 있습니다.


4. C 프로그램의 기본 구조 정리

구성 요소 설명
#include <stdio.h> 표준 입출력 함수를 사용하기 위해 stdio.h 헤더를 포함
main() 함수 프로그램 실행의 시작점 (필수)
return 0; 프로그램이 정상적으로 종료되었음을 운영체제에 알림

5. 예제 코드 (설명 포함)

#include <stdio.h>  // 표준 입출력 라이브러리 포함

// 프로그램의 시작점
int main() {
    // 화면에 "Hello, World!" 출력
    printf("Hello, World!\n");

    // 프로그램이 정상적으로 종료되었음을 운영체제에 알림
    return 0;
}

실행 결과

Hello, World!

6. 정리

  • #include <stdio.h>: C의 표준 입출력 함수(printf(), scanf() 등)를 사용하기 위한 헤더 파일 포함.
  • main() 함수: 모든 C 프로그램이 반드시 포함해야 하는 프로그램 실행의 시작점.
  • return 0;: 프로그램이 정상 종료되었음을 운영체제에 알림.

C 프로그램의 기본 구조를 이해하면, 이후 함수, 변수, 제어문 등의 개념을 학습하는 데 도움이 됩니다.