C 언어
변수는 메모리 공간에 붙이는 이름입니다. 타입, 저장 클래스, 스코프, 링키지, 수명 등 변수의 모든 속성을 체계적으로 정리합니다.
| 구분 | 설명 | 메모리 할당 | 예시 | ||
|---|---|---|---|---|---|
| 정의(Definition) | 저장 공간 생성, 초기화 가능 | 예 | int x = 10; | ||
| 선언(Declaration) | 이름과 타입만 알림, extern 사용 | 아니오 | extern int x; |
| 타입 | 크기 | 용도 | 서식 | ||
|---|---|---|---|---|---|
char | 1바이트 | 문자/작은 정수 | %c %hhd | ||
int | 4바이트 (일반) | 일반 정수 | %d | ||
float | 4바이트 | 단정밀 실수 | %f | ||
double | 8바이트 | 배정밀 실수 (기본 권장) | %lf | ||
void | - | 값 없음 (변수 선언 불가) | - |
| 저장 기간 | 초기값 |
|---|---|
| 정적 저장 기간 (전역, static) | 0 / NULL / 0.0 / '\0' (자동 0 초기화) |
| 자동 저장 기간 (지역, auto) | 불확정값 (쓰레기 값) - 반드시 직접 초기화 |
| 동적 할당 (malloc) | 불확정값 (calloc은 0 초기화) |
| 종류 | 선언 위치 | 스코프 | 링키지 | 수명 | 키워드 |
|---|---|---|---|---|---|
| 지역 변수 | 블록 내부 | 블록 | 없음 | 블록 진입~종료 | auto (생략 가능) |
| 전역 변수 | 함수 외부 | 파일 (전역) | 외부 | 프로그램 전체 | (기본) |
| 정적 전역 | 함수 외부 + static | 파일 | 내부 | 프로그램 전체 | static |
| 정적 지역 | 블록 내부 + static | 블록 | 없음 | 프로그램 전체 | static |
| 외부 참조 | 함수 외부 + extern | 파일 | 외부 | 정의된 곳과 동일 | extern |
| 매개변수 | 함수 헤더 | 함수 본문 | 없음 | 함수 호출~반환 | - |
| 구분 | Lvalue (좌변값) | Rvalue (우변값) |
|---|---|---|
| 정의 | 메모리 위치를 가진 표현식 | 값만 가진 표현식 (임시 값) |
| 대입 가능 | 왼쪽에 올 수 있음 | 왼쪽에 올 수 없음 |
| 주소 연산 | &lvalue 가능 | &rvalue 불가 |
| 예시 | 변수, *ptr, arr[i], struct.field | 리터럴, x+1, func(), 3 |