C 최종 수정일 2026-06-18 17:50 조회수 8
대시보드

C

기본 정보


개요

C 언어는 1972년 벨 연구소(Bell Labs)의 데니스 리치(Dennis Ritchie)가 개발한 범용 프로그래밍 언어이다.

하드웨어와 가까운 저수준 프로그래밍과 높은 성능을 제공하여 운영체제, 컴파일러, 데이터베이스, 임베디드 시스템 등 다양한 분야에서 사용되고 있다.

현재도 많은 현대 프로그래밍 언어(C++, Java, C#, Objective-C 등)에 영향을 준 대표적인 언어이다.


주요 특징

  • 컴파일 언어
  • 절차지향 프로그래밍
  • 빠른 실행 속도
  • 메모리 직접 제어 가능
  • 포인터 지원
  • 운영체제 개발에 적합
  • 다양한 플랫폼 지원

Hello World

#include <stdio.h>

int main(){

    printf("Hello World");

    return 0;

}

변수

int age = 30;

float score = 95.5;

char grade = 'A';

double pi = 3.141592;

데이터 타입

정수형

  • char
  • short
  • int
  • long
  • long long

실수형

  • float
  • double
  • long double

기타

  • void

조건문

if(age >= 20){

    printf("성인");

}else{

    printf("미성년자");

}

반복문

for

for(int i=0;i<5;i++){

    printf("%d",i);

}

while

while(i<5){

    i++;

}

함수

int add(int a,int b){

    return a+b;

}

배열

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

접근

printf("%d",numbers[0]);

문자열

char name[]="Cloud";

문자열 처리는 string.h 라이브러리를 자주 사용한다.


포인터

int num=10;

int *ptr=&num;

printf("%d",*ptr);

포인터는 C 언어의 핵심 개념 중 하나이며, 메모리 주소를 직접 다룰 수 있다.


구조체

struct User{

    char name[20];

    int age;

};

객체와 유사한 데이터 구조를 정의할 수 있다.


동적 메모리

int *arr;

arr=(int*)malloc(sizeof(int)*10);

free(arr);

주요 함수

  • malloc()
  • calloc()
  • realloc()
  • free()

메모리 해제를 하지 않으면 메모리 누수(Memory Leak)가 발생할 수 있다.


파일 입출력

FILE *fp;

fp=fopen("test.txt","r");

fclose(fp);

전처리기

#define PI 3.14

또는

#include <stdio.h>

컴파일 전에 처리되는 명령이다.


헤더 파일

대표적인 표준 라이브러리

  • stdio.h
  • stdlib.h
  • string.h
  • math.h
  • time.h
  • stdbool.h

컴파일 과정

소스코드 (.c)

↓

전처리

↓

컴파일

↓

어셈블리

↓

링크

↓

실행파일 (.exe)

활용 분야

  • 운영체제
  • Linux Kernel
  • Windows Kernel 일부
  • 데이터베이스
  • 컴파일러
  • 게임 엔진
  • 임베디드 시스템
  • IoT
  • 드라이버 개발

장점

  • 매우 빠른 실행 속도
  • 하드웨어 제어 가능
  • 메모리 직접 접근
  • 이식성이 높음
  • 운영체제 개발 가능

단점

  • 메모리 관리 직접 수행
  • 포인터 사용 난이도 높음
  • 버퍼 오버플로우 위험
  • 객체지향 미지원
  • 생산성이 현대 언어보다 낮은 편

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • 포인터 사용 시 NULL 체크
  • malloc() 후 반드시 free() 호출
  • 배열 범위 검사
  • const 적극 활용
  • 헤더 파일 중복 포함 방지(#ifndef)
  • 함수 단위 모듈화
  • 컴파일 경고(-Wall) 활성화
  • 코드 스타일 일관성 유지
  • 메모리 누수 검사 도구(Valgrind 등) 활용

C 언어가 영향을 준 언어


관련 문서


출처

  • ISO C 표준
  • cppreference C Documentation
  • 위키백과 「C (프로그래밍 언어)」