C
기본 정보
- 이름: C
- 분류: 절차지향 프로그래밍 언어
- 개발자: 데니스 리치 (Dennis Ritchie)
- 개발년도: 1972년
- 개발기관: Bell Labs
- 주요 용도: 운영체제, 임베디드, 시스템 프로그래밍
- 관련 주제: #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=#
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 (프로그래밍 언어)」