
주석달기




라이프 타임은 언제 만들어져서 언제 사라지는 지를 의미하고, 어디서 접근할 수 있는지를 스코프라고 함.

지역변수: 해당 함수나 블록({}) 내에서만 사용 가능
전역변수: 소스 전체에서 사용 가능
컴퓨터의 메모리: RAM

지역변수 저장: stack
전역변수, static변수 저장: bss, data

지역변수는 그 블록 내에서만 유효함. 전역변수는 어디에서나 영향을 미침


auto는 생략이 가능하며, stack 공간을 일시적으로 사용함.
( int a도 원래는 auto int a라고 사용 )



| 구분 | 키워드 | 초기화 시점 | 값 유지 여부 (함수 종료 시) |
| 일반 변수 | auto (생략 가능) | 함수가 호출될 때마다 매번 | 소멸됨 (기억 못 함) |
| 정적 변수 | static | 프로그램 시작 시 딱 한 번 | 유지됨 (이전 값 기억함) |
결론적으로 x는 함수가 실행될 때마다 초기화되어 계속 10을 출력하는 것이고, y는 초기화가 한 번만 일어나고 함수가 호출될 때마다 값이 1씩 누적되어 출력되는 것
| 변수 종류 | 키워드 | 선언 위치 | 통용 범위 (Scope) | 생존 기간 (Lifetime) | 초기값 | 저장되는 메모리 영역 |
| 지역 변수 | 생략 가능 | 함수나 블록 {} 내부 | 선언된 함수나 블록 내부 | 함수/블록 종료 시 소멸 | 쓰레기값 | 스택 (Stack) |
| auto 변수 | auto | 함수나 블록 {} 내부 | 지역 변수와 완벽히 동일 | 지역 변수와 동일 | 쓰레기값 | 스택 (Stack) |
| 정적 변수 | static | 함수 내부 또는 외부 | 함수 내부: 해당 함수 안 함수 외부: 해당 소스 파일 안 |
프로그램 시작 ~ 종료 | 0 | 데이터 (Data / BSS) |
| 전역 변수 | 없음 | 모든 함수 외부 | 프로그램 전체 (어디서나) | 프로그램 시작 ~ 종료 | 0 | 데이터 (Data / BSS) |





| 기호 | 이름 | 주요 키워드 | 한 줄 요약 |
| () | 소괄호 (Parentheses) | 함수, 연산 우선순위 | "실행해라!" 또는 "먼저 계산해라!" |
| {} | 중괄호 (Curly braces) | 코드 영역, 딕셔너리/객체 | "여기서부터 여기까지 한 묶음!" |
| [] | 대괄호 (Square brackets) | 리스트/배열, 인덱싱 | "데이터 목록" 또는 "몇 번째 값 꺼내줘!" |
파이썬 배열과 c언어 배열 비교


문자형 배열을 쓸 때에는 char형을 쓰며, 큰 따옴표를 해서 한 번에 사용함. 마지막에는 NULL문자도 자동으로 들어감.










여러 개를 입력할 때에는 배열을 사용함.

첨자는 [0][0]부터 시작함. 오른쪽부터 시작하며 마지막 방은 하나 더 적은 방임

자칫하면 방이 4개로 보일 수도 있지만, 문자열형이기 때문에 마지막에 NULL문자가 생성되어있음.
따라서 방은 5개. (문자열형이기에 %c가 아닌 %s를 씀)