시작하기
환경 셋업과 빌드
기초 (Basic)
4단원 · Hello World 부터 연산자까지
1단원 — Hello, World!
C 프로그램 뼈대 · 컴파일 · 실행
C 프로그래밍의 첫 단원입니다. 가장 단순한 프로그램을 통해 **C 프로그램의 뼈대 → 컴파일 → 실행**의 한 사이클을 직접 경험해 봅니다.
2단원 — 변수와 자료형
변수 · int/float/char · sizeof · const
값을 메모리에 담아 두고 이름으로 부를 수 있게 하는 것이 **변수**입니다. 어떤 종류의 값을, 몇 바이트짜리 상자에 담을지 결정하는 것이 **자료형**입니다.
3단원 — 입출력
printf 서식 · scanf · 안전 입력
프로그램이 외부와 대화하는 가장 기본적인 두 가지 도구를 익힙니다. `printf`는 **출력**, `scanf`는 **입력** 입니다.
4단원 — 연산자
산술 · 비교 · 논리 · 형변환
값을 더하고, 비교하고, 논리적으로 결합하고, 형식을 바꾸는 것은 모두 **연산자**가 합니다. 이번 단원에서 다루는 연산자는 이후 모든 단원의 기초가 됩니다.
중급 (Intermediate)
4단원 · 조건·반복·배열·문자열
1단원 — 조건문
if · else · switch · 삼항
조건문은 프로그램의 **흐름을 가지가 갈리게** 합니다. 이 단원에서는 `if`/`else if`/`else`, 삼항 연산자, `switch`까지 분기 도구 세트를 익힙니다.
2단원 — 반복문
for · while · do-while · break/continue
같은 작업을 여러 번 수행하는 도구가 **반복문**입니다. C에는 세 가지 반복문이 있고, 각각 어울리는 상황이 다릅니다.
3단원 — 배열
1차원 · 2차원 · 인덱싱
같은 자료형의 값을 **여러 개 한 묶음**으로 다루는 도구가 배열입니다. 변수 100개를 따로 만드는 대신, 100칸짜리 배열 하나로 처리할 수 있습니다.
4단원 — 문자열
char[] · <string.h> · fgets
C에는 별도의 "문자열" 자료형이 없습니다. 문자열은 **`'\0'`(널 문자)로 끝나는 `char` 배열**입니다. `<string.h>`의 표준 함수를 활용해 길이/복사/비교/연결을 다룹니다.
고급 (Advanced)
3단원 · 포인터·함수·구조체
1단원 — 포인터
& · * · 배열-포인터 · 포인터 연산
C 언어에서 가장 강력하고, 동시에 가장 많은 버그의 원인이 되는 도구입니다. **포인터는 "값"이 아니라 "값이 있는 곳(주소)"** 을 다룹니다.
2단원 — 함수
정의 · 호출 · 재귀 · static
함수는 **이름이 붙은 코드 블록**입니다. 같은 작업을 한 곳에 모아 두면 중복이 줄고, 바꿀 때 한 군데만 고치면 됩니다.
3단원 — 구조체
struct · typedef · 포인터 · 배열
서로 관련된 여러 값을 **하나의 자료형**으로 묶는 도구가 구조체입니다. "이름은 string, 나이는 int, 점수는 double" 같은 묶음을 한 변수로 다룹니다.
심화 (Deep)
2단원 · 파일 I/O · 동적 메모리
1단원 — 파일 입출력
fopen · fread/fwrite · 텍스트/바이너리
지금까지의 프로그램은 종료하면 모든 데이터가 사라졌습니다. 파일 입출력으로 **디스크에 데이터를 저장하고 다시 읽어**올 수 있습니다.
2단원 — 동적 메모리
malloc · free · calloc · realloc
지금까지 배열의 크기는 **컴파일 시점에 결정**됐습니다. 하지만 런타임에 입력으로 받은 N의 크기로 배열이 필요하다면? **동적 메모리 할당**의 차례입니다.