문장 & 블록
- 조건문과 반복문에서 중괄호가 없으면 문장을 하나씩만 기술
- { } (블록): 하나의 문장이 들어가는 자리에 여러 개의 문장을 기술하고자 할 때 사용
- 중괄호가 없을 때 else는 아직 짝 지어지지 않은 if들 중 가장 가까이 위치한 if와 짝
코딩 스타일
들여쓰기
- C에서의 공백과 줄 바꿈: 단어/의미를 구별하는 용도
- 들여쓰기: 블록 안의 문장은 블록보다 안쪽에 작성, 문법적 의미는 없으나 보기 편하게 하기 위함
중괄호의 위치
- K&R
if (...) {
...;
...;
}
- BSD
if (...)
{
...;
...;
}
- GNU
if (...)
{
...;
...;
}
변수 범위
- 블록의 범위가 겹치는 경우 원칙적으로 가장 안 쪽 범위의 변수로 간주
- 내부 변수(지역 변수)
- 어떤 블록 내에서 선언 및 정의된 변수
- 그 블록 내에서만 의미를 가짐
- 외부 변수(전역 변수)
- 어떤 블록에도 속하지 않는 변수(블록 밖에서 선언)
- 프로그램 전체에서 의미를 가짐
내부 변수와 외부 변수의 차이점
내부 변수 | 외부 변수 |
- 생성 시기: 선언된 블록이 시작될 때 - 여러 번 생성 가능 - 생성될 때 초기화 - 초기화 값을 지정하지 않은 경우 초기화 X - 블록이 끝나면 소멸 - 선언된 블록 내에서만 유효 |
- 생성 시기: 프로그램이 시작될 때 - 한 번만 생성 - 생성될 때 초기화 - 초기화 값을 지정하지 않은 경우 0으로 초기화 - 프로그램이 끝나면 소멸 - 프로그램 전체에서 유효 |
정적 변수
- (내부) 정적 변수
- 함수 등의 내부에서 선언
- 선언할 때 앞에 static을 붙임
- 프로그램이 시작될 때 생성되고 끝날 때 소멸
- 초기화는 프로그램 시작될 때 한번
- 초기화 값을 지정하지 않으면 0으로 초기화
- 함수 등의 내부에서만 사용 가능
- 전역 변수는 모든 함수에서 변수를 읽거나 쓸 수 있어 편리하지만, 어느 함수에서 어떻게 바뀌는지 추적하기 어려워 프로그램 버그 해결이 어려워질 수 있음
- 프로그램이 동작하는 한 유지하는 외부 변수 + 블록 내부에서만 사용 가능 한 내부 변수의 성질