도슐랭스타
C언어-기억 부류 지정자 본문
지역 변수와 전역 변수
- 지역 변수와 전역 변수는 선언 위치에 따라서 결정된다.
- 지역 변수 : 해당 함수나 블록 안에서만 사용이 가능하다.
- 전역 변수 : 소스 전체에서 사용이 가능하다.
기억 부류 지정자(storage class specifier)
- 변수와 함수의 생명주기(life time)와 가시성 범위(space)를 지정하여 어떤 종류의 메모리에 저장되는지 지정한다.
생명주기 : 언제 생기고 사라지는가 / 가시성 범위 : 어떤 곳에서 접근이 가능한가
auto(자동) 변수
- 가장 많이 사용하며 생략이 가능하다.(지금까지 따로 지정하지 않았다면 지역 변수는 전부 auto 였던 것!)
- 지역 변수이다.
- 스택(stack) 공간을 일시적을 사용한다. -> 블록이나 함수를 벗어나면 기억영역이 소거된다!
- 초기화는 실행시 이루어지며 초기화하지 않으면 쓰레기 값을 가진다.
register(레지스터) 변수
- CPU 내의 레지스터에 저장한다.
- CPU 내부에 저장하므로 고속 처리가 가능하며 작고 빠르다.
- CPU 레지스터에 직접 저장되기 때문에 메모리 주소가 없으며 따라서 레지스터 변수에 대한 주소를 참조할 수 없다.("&" 사용 불가능)
- 4byte의 데이터만 저장이 가능하다.(정수형, 포인터 등)
int main() {
int x = 10; // auto 변수
register int y = 20; // register 변수
int *ptr_x = &x; // auto 변수의 주소를 가져옴.
int *ptr_y = &y; // register 변수의 주소는 가져올 수 없음.
return 0;
}
static(정적) 변수
- ★프로그램이 종료될 때까지 값을 유지한다.(auto와의 차이점!)
- 처음 실행시 한 번만 초기화를 한다. 초기화 값이 없으면 0으로 초기화한다.
- 정적 데이터 영역에 저장한다.
- 지역 static 변수는 그 블록 내에서만 접근이 가능하다.
- 전역 변수는 기본적으로 static이며 생략이 가능하다.(지금까지 따로 지정하지 않았다면 전역 변수는 전부 static이던 것!)
extern 변수
- 기억 장소가 할당되지 않은 변수이다.
- 프로그램의 다른 파일에 선언된 변수를 해당 파일에서 사용하는 것이다.

도슐랭스타
★★★☆☆ : 너무 신기햄!!
우와 생략해도 알아서 해주니 지금까지 전혀! 몰랐는데 이런 게 있었다니! 너무 신기하다..! 전자계산기 구조에서 배운 후입선출..? 나중에 들어온 데이터가 먼저 나가는 그 뭐시기도 있었던 것 같은데 조금 더 공부해서 이 부분은 또 올려야겠담.
출처 : https://www.youtube.com/@smilehan8416/playlists
Smile Han
www.youtube.com
반응형
Comments