c 언어

C 프로그램 기본 구조와 `main` 함수

임베디드 친구 2024. 12. 12. 15:29
반응형

C 언어는 전 세계적으로 널리 사용되는 프로그래밍 언어로, 효율적이고 강력한 소프트웨어 개발에 적합합니다. 이번 글에서는 C 프로그램의 기본 구조와 핵심 요소인 main 함수에 대해 자세히 알아보겠습니다.


C 프로그램의 기본 구조

C 언어 프로그램은 다음과 같은 기본 구조를 따릅니다:

#include <header파일>

// 전역 변수 선언

// 함수 프로토타입 선언

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

// 기타 함수 정의

주요 구성 요소

  1. 헤더 파일 포함

    • #include 지시어를 사용하여 표준 라이브러리 또는 사용자 정의 헤더 파일을 포함합니다.
    • 예: #include <stdio.h>는 표준 입출력 라이브러리를 포함합니다.
  2. 전역 변수 선언

    • 프로그램 전체에서 사용 가능한 변수를 선언합니다. 이는 프로그램의 모든 함수에서 접근할 수 있습니다.
  3. 함수 프로토타입 선언

    • 함수의 정의 전에 함수의 원형을 선언하여 컴파일러에 함수의 존재를 알립니다.
  4. main 함수

    • 프로그램의 진입점(entry point)으로, 모든 C 프로그램은 반드시 main 함수를 포함해야 합니다.
    • 프로그램 실행의 시작과 끝을 담당합니다.
  5. 기타 함수 정의

    • main 함수 이외의 함수들은 프로그램의 주요 로직을 구현하는 데 사용됩니다.

main 함수

main 함수는 프로그램 실행이 시작되는 진입점입니다. 모든 C 프로그램은 main 함수를 통해 실행됩니다. 이 함수는 반드시 포함되어야 하며, 다음과 같은 기본 형태를 가집니다:

int main() {
    // 실행 코드
    return 0;
}

main 함수의 구성 요소

  1. 반환형 (int)

    • main 함수는 정수 값을 반환합니다. 반환값은 운영 체제에 프로그램의 종료 상태를 전달합니다.
    • 일반적으로 return 0;은 성공을, return 1;은 실패를 의미합니다.
  2. 중괄호 ({})

    • 중괄호 안에 프로그램 실행 코드를 작성합니다.
  3. return

    • main 함수의 끝에서 반환값을 지정합니다.

main 함수의 매개변수

main 함수는 매개변수를 가질 수 있습니다. 이는 명령줄에서 전달된 데이터를 받을 때 유용합니다:

int main(int argc, char *argv[]) {
    // 실행 코드
    return 0;
}
  • argc: 명령줄 인수의 개수
  • argv: 명령줄 인수의 문자열 배열

예제: 명령줄 인수 출력

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("명령줄 인수의 개수: %d\n", argc);
    for (int i = 0; i < argc; i++) {
        printf("argv[%d]: %s\n", i, argv[i]);
    }
    return 0;
}

간단한 예제: "Hello, World!"

C 프로그램의 기본 구조를 이해하기 위해 가장 간단한 프로그램인 "Hello, World!"를 작성해 보겠습니다.

#include <stdio.h>

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

코드 설명

  1. #include <stdio.h>

    • 표준 입출력 라이브러리를 포함하여 printf 함수를 사용 가능하게 합니다.
  2. main 함수

    • 프로그램 실행의 시작점입니다.
  3. printf 함수

    • 화면에 "Hello, World!"를 출력합니다.
  4. return 0;

    • 프로그램이 성공적으로 종료되었음을 운영 체제에 알립니다.

실행 결과

Hello, World!

실습 문제

문제 1: 간단한 계산기

사용자에게 두 개의 정수를 입력받아 합을 출력하는 프로그램을 작성하세요.

#include <stdio.h>

int main() {
    int num1, num2;

    printf("첫 번째 정수를 입력하세요: ");
    scanf("%d", &num1);

    printf("두 번째 정수를 입력하세요: ");
    scanf("%d", &num2);

    printf("두 수의 합: %d\n", num1 + num2);

    return 0;
}

문제 2: 명령줄 인수를 활용한 프로그램

명령줄에서 입력받은 문자열을 거꾸로 출력하는 프로그램을 작성하세요.

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("사용법: %s <문자열>\n", argv[0]);
        return 1;
    }

    char *str = argv[1];
    int len = strlen(str);

    printf("입력 문자열: %s\n", str);
    printf("거꾸로 출력: ");

    for (int i = len - 1; i >= 0; i--) {
        putchar(str[i]);
    }

    printf("\n");

    return 0;
}

마무리

이번 글에서는 C 프로그램의 기본 구조와 main 함수의 역할을 살펴보았습니다. C 언어의 프로그램은 단순한 구조를 가지지만, 이를 기반으로 복잡한 소프트웨어를 개발할 수 있습니다. 실습 문제를 통해 직접 코드를 작성하며 개념을 익혀 보세요.

반응형

'c 언어' 카테고리의 다른 글

C 언어 조건문과 반복문  (0) 2024.12.13
C 언어의 연산자  (0) 2024.12.12
C 프로그램 입/출력 및 파일 입출력  (0) 2024.12.12
C 언어 데이터 타입과 변수  (0) 2024.12.12
C 언어 소개  (0) 2024.12.12