728x90

C 언어의 문법은 프로그래밍 언어의 기본 개념을 이해하는 데 중요한 역할을 합니다. C 언어는 비교적 단순한 문법 구조를 가지고 있지만, 포인터와 같은 고급 기능을 제공하여 복잡한 프로그램을 작성할 수 있도록 해줍니다. 아래에서는 C 언어의 주요 문법과 예제를 통해 C 언어가 어떻게 구성되어 있는지 설명하겠습니다.

C 언어의 기본 문법

1. 기본 구조

C 언어 프로그램은 함수들의 집합으로 구성되며, 모든 C 프로그램은 main 함수를 포함해야 합니다. main 함수는 프로그램의 진입점(Entry point)으로, 프로그램이 실행될 때 가장 먼저 호출됩니다.

#include <stdio.h>

int main() {
    // C 프로그램의 시작점
    printf("Hello, World!\n");
    return 0;
}
  • #include <stdio.h>: 표준 입력 및 출력 함수들을 포함하는 헤더 파일을 불러옵니다.
  • int main(): 프로그램의 시작 함수입니다.
  • printf: 화면에 문자열을 출력하는 함수입니다.
  • return 0;: 프로그램이 성공적으로 종료되었음을 운영 체제에 알립니다.

2. 데이터 타입

C 언어는 여러 가지 기본 데이터 타입을 제공합니다.

  • 정수형 (Integer): int, short, long, long long
  • 부호 없는 정수형 (Unsigned Integer): unsigned int, unsigned short, unsigned long
  • 실수형 (Floating-point): float, double, long double
  • 문자형 (Character): char
#include <stdio.h>

int main() {
    int integer = 10;
    float decimal = 3.14;
    char character = 'A';

    printf("Integer: %d\n", integer);
    printf("Decimal: %.2f\n", decimal);
    printf("Character: %c\n", character);

    return 0;
}

3. 변수와 상수

변수는 값을 저장할 수 있는 공간을 제공합니다. 상수는 변경할 수 없는 값을 나타냅니다.

#include <stdio.h>

int main() {
    int variable = 5;           // 변수
    const float pi = 3.14159;   // 상수

    variable = 10; // 변수 값 변경 가능
    // pi = 3.14;  // 상수는 변경 불가 (컴파일 에러 발생)

    printf("Variable: %d\n", variable);
    printf("Constant: %.5f\n", pi);

    return 0;
}

4. 연산자

C 언어는 다양한 연산자를 제공합니다.

  • 산술 연산자: +, -, *, /, %
  • 증감 연산자: ++, --
  • 비교 연산자: ==, !=, <, >, <=, >=
  • 논리 연산자: &&, ||, !
  • 비트 연산자: &, |, ^, ~, <<, >>
  • 대입 연산자: =, +=, -=, *=, /=, %=
#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;

    printf("a + b = %d\n", a + b);
    printf("a - b = %d\n", a - b);
    printf("a * b = %d\n", a * b);
    printf("a / b = %d\n", a / b);
    printf("a %% b = %d\n", a % b);

    a++;
    printf("a++ = %d\n", a);

    b--;
    printf("b-- = %d\n", b);

    return 0;
}

5. 조건문

조건문은 특정 조건에 따라 코드의 실행을 제어합니다.

  • if 문: 조건이 참일 때만 블록을 실행합니다.
  • else 문: if 조건이 거짓일 때 블록을 실행합니다.
  • else if 문: 여러 조건을 순차적으로 검사합니다.
  • switch 문: 여러 값에 따라 분기합니다.
#include <stdio.h>

int main() {
    int number = 5;

    // if-else 문
    if (number > 0) {
        printf("Positive number\n");
    } else if (number < 0) {
        printf("Negative number\n");
    } else {
        printf("Zero\n");
    }

    // switch 문
    switch (number) {
        case 1:
            printf("One\n");
            break;
        case 2:
            printf("Two\n");
            break;
        default:
            printf("Other number\n");
            break;
    }

    return 0;
}

6. 반복문

반복문은 특정 조건을 만족할 때까지 블록을 반복 실행합니다.

  • for 문: 반복 횟수가 정해진 경우에 주로 사용됩니다.
  • while 문: 조건이 참인 동안 블록을 실행합니다.
  • do-while 문: 블록을 먼저 실행한 후 조건을 검사합니다.
#include <stdio.h>

int main() {
    // for 문
    for (int i = 0; i < 5; i++) {
        printf("For Loop: %d\n", i);
    }

    // while 문
    int j = 0;
    while (j < 5) {
        printf("While Loop: %d\n", j);
        j++;
    }

    // do-while 문
    int k = 0;
    do {
        printf("Do-While Loop: %d\n", k);
        k++;
    } while (k < 5);

    return 0;
}

7. 배열

배열은 동일한 데이터 타입의 집합을 나타내며, 인덱스를 통해 요소에 접근할 수 있습니다.

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {
        printf("Element %d: %d\n", i, numbers[i]);
    }

    return 0;
}

8. 포인터

포인터는 메모리 주소를 저장하는 변수입니다. 포인터는 고급 C 프로그래밍에서 중요한 역할을 합니다.

#include <stdio.h>

int main() {
    int value = 42;
    int *ptr = &value; // 포인터 변수 선언 및 초기화

    printf("Value: %d\n", value);
    printf("Address of value: %p\n", &value);
    printf("Pointer: %p\n", ptr);
    printf("Dereferenced Pointer: %d\n", *ptr);

    return 0;
}
  • int *ptr: 포인터 변수를 선언합니다.
  • &value: 변수의 메모리 주소를 가져옵니다.
  • *ptr: 포인터가 가리키는 주소의 값을 가져옵니다.

9. 함수

함수는 특정 작업을 수행하는 코드 블록입니다. C 언어에서는 사용자 정의 함수를 통해 코드를 모듈화할 수 있습니다.

#include <stdio.h>

// 함수 선언
int add(int a, int b);

int main() {
    int sum = add(3, 4);
    printf("Sum: %d\n", sum);

    return 0;
}

// 함수 정의
int add(int a, int b) {
    return a + b;
}

10. 구조체

구조체는 사용자 정의 데이터 타입으로, 여러 변수들을 하나의 복합 데이터 타입으로 묶을 수 있습니다.

#include <stdio.h>

// 구조체 정의
struct Point {
    int x;
    int y;
};

int main() {
    struct Point p1;
    p1.x = 10;
    p1.y = 20;

    printf("Point p1: (%d, %d)\n", p1.x, p1.y);

    return 0;
}
  • struct Point: 새로운 구조체 타입을 정의합니다.
  • p1.x: 구조체 멤버에 접근합니다.

결론

C 언어는 강력하고 유연한 프로그래밍 언어로, 저수준 시스템 프로그래밍부터 고수준 응용 프로그램 개발까지 다양한 분야에 사용됩니다. 위에서 소개한 C 언어의 문법 요소들을 이해하고 활용함으로써, C 언어를 사용하여 복잡하고 효율적인 프로그램을 작성할 수 있습니다. C 언어는 많은 현대 프로그래밍 언어에 영향을 미쳤으며, 컴퓨터 과학 및 소프트웨어 개발의 기초를 이해하는 데 중요한 역할을 합니다. 꾸준한 학습과 실습을 통해 C 언어의 다양한 기능을 익히고, 이를 통해 더 나은 소프트웨어 개발자가 될 수 있습니다.

728x90
반응형

'Software > C' 카테고리의 다른 글

C 시작하기 - OpenCV 활용  (0) 2024.08.06
C 시작하기 - OpenCV 소개  (0) 2024.08.06
C 시작하기 - QT + MariaDB CRUD  (0) 2024.08.04
C 시작하기 - QT  (0) 2024.08.04
C언어 소개  (0) 2024.07.29

+ Recent posts