C는 1972년 Dennis Ritchie가 Bell Labs에서 개발한 범용 절차적 프로그래밍 언어다. Unix 운영체제 작성에 사용되었으며, 현재도 운영체제 커널, 임베디드 시스템, 하드웨어 드라이버의 핵심 언어다. 대부분의 현대 언어(Java, Python, JavaScript)가 C의 영향을 받았다.
핵심 특징
| 특징 | 설명 |
|---|
| 저수준 메모리 접근 | 포인터로 메모리 직접 조작 |
| 이식성 | 다양한 플랫폼으로 컴파일 가능 |
| 효율성 | 하드웨어에 가까운 성능 |
| 수동 메모리 관리 | malloc/free로 직접 할당·해제 |
기본 문법
c
# include <stdio.h>
# include <stdlib.h>
// 함수
int add(int a, int b) {
return a + b;
}
int main() {
printf("Hello, C!\n");
// 배열
int arr[5] = {1, 2, 3, 4, 5};
printf("%d\n", arr[2]); // 3
// 포인터
int x = 10;
int *p = &x; // p는 x의 주소
printf("%d\n", *p); // 10 (역참조)
*p = 20; // x 값을 20으로 변경
printf("%d\n", x); // 20
return 0;
}
동적 메모리 관리
c
// 힙에 메모리 할당
int *arr = (int*)malloc(5 * sizeof(int));
if (arr == NULL) {
fprintf(stderr, "메모리 할당 실패\n");
exit(1);
}
for (int i = 0; i < 5; i++) arr[i] = i * 2;
free(arr); // 반드시 해제 (메모리 누수 방지)
arr = NULL;
구조체
c
typedef struct {
char name[50];
int age;
} Person;
Person p = {"Alice", 30};
printf("%s is %d years old\n", p.name, p.age);
C의 위치
C → 영향 → C++, Java, JavaScript, Python, PHP, Go, Rust...
C → 작성 → Linux 커널, Unix, Python 인터프리터(CPython)
관련 개념
참고문헌
- •Kernighan & Ritchie. The C Programming Language (1988)
- •ISO/IEC 9899 — C 언어 표준