security
CHAPTER 85 / 96
읽기 약 2분
FUNCTION
C 최소 문법: printf부터
핵심 개념
⚠️ C 메모리 취약점 학습용 최소 문법. printf·변수·타입·gcc 컴파일 — Python/JS 경험자가 빠르게 시작.
본문
첫 C 프로그램
// hello.c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}# 컴파일 + 실행
gcc -Wall -O0 -g -o hello hello.c
./hello
# Hello, World!
# 자주 쓰는 옵션
# -Wall : 모든 경고
# -O0 : 최적화 없음 (디버그용)
# -g : 디버그 심볼 포함
# -fsanitize=address : ASan (메모리 오류 탐지)변수와 타입
#include <stdio.h>
int main(void) {
// 정수 타입
int age = 30; // 보통 4바이트 (-2^31 ~ 2^31-1)
long big = 100000000L; // 보통 8바이트
short small = 32000; // 보통 2바이트
// 부동소수점
float pi = 3.14f; // 4바이트
double precise = 3.14159265358979; // 8바이트
// 문자
char c = 'A'; // 1바이트 (ASCII 65)
// 부호 없음
unsigned int positive = 4294967295; // 0 ~ 2^32-1
printf("age=%d, pi=%f, c=%c\n", age, pi, c);
printf("size: int=%zu, long=%zu, char=%zu\n",
sizeof(int), sizeof(long), sizeof(char));
return 0;
}조건문과 반복문
#include <stdio.h>
int main(void) {
// if-else
int score = 85;
if (score >= 90) {
printf("A\n");
} else if (score >= 80) {
printf("B\n");
} else {
printf("F\n");
}
// for
for (int i = 0; i < 5; i++) {
printf("%d ", i);
}
printf("\n");
// while
int n = 10;
while (n > 0) {
printf("%d ", n--);
}
printf("\n");
return 0;
}printf 포맷 — 메모리 취약점의 시작
// printf 포맷 지정자
%d // int (10진수)
%u // unsigned int
%x // 16진수
%c // 문자
%s // 문자열 (null 종료)
%p // 포인터 (주소)
%zu // size_t
// ⚠️ 다음 챕터에서 이 포맷이 어떻게 취약점이 되는지C와 Python/JS 차이
| 측면 | C | Python/JS |
|---|---|---|
| 컴파일 | 명시적 (gcc) | 인터프리터 |
| 메모리 | 수동 (malloc/free) | 자동 (GC) |
| 타입 | 정적·강타입 | 동적 |
| 포인터 | 직접 사용 | 추상화 |
| 안전성 | 프로그래머 책임 | 런타임 보호 |
| 속도 | 매우 빠름 | 느림 (10~100배) |다음 챕터
CH.2 "C 최소 문법: 배열과 문자열" — 버퍼의 시작.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
Python/JS 경험자인 내가 C를 30일에 익히려면 어떤 챕터·문제를 풀어야 할지 학습 플랜을 만들어줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
한국 임베디드/시스템 개발자의 C 학습 경로 5가지를 비교해줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 코드(다른 언어)를 C로 변환했을 때 주의할 메모리 안전 이슈를 자동 분석해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 한국 IT 시장에서 C 개발자 수요 vs 공급, 연봉 트렌드를 솔직히 알려줘.
⭐ 이것만 기억하세요
C 최소 문법: printf부터는 이 3가지만 확실히 잡으세요
1.C는 컴파일·정적 타입·수동 메모리 — Python/JS와 다른 패러다임이지만 메모리 동작 이해의 시작
2.gcc -Wall -fsanitize=address — 학습 시 모든 경고 + 메모리 오류 자동 탐지
3.다음 챕터 CH.2에서 배열과 문자열 — 버퍼 개념과 메모리 취약점의 시작
공유하기
진행도 85 / 96