C++

스코프

Jagbbum 2023. 9. 21. 00:34

스코프란 간단하게 말하면 변수를 사용할 수 있는 범위이다.

int main(){
	int block_ex = 0;
    .
    .
    .
    block_ex = 6;
}
int x = block_ex;

위와 같은 상황에서 block_ex의 스코프는 main()이다. 그러므로 블록 밖에서 block_ex를 사용하면 에러가 난다.

이러한 상황으로 보면 if문이나 for문에서도 그 안에서 선언된 이름도 밖으로 나오면 에러가 나온다.

static

static은 지역변수를 static 지역변수로 만들어준다. static 지역변수는 이런 특성이 있다.

- 초기화할 때 메모리에 할당되고 종료 시 메모리에서 사라짐

- Block Scope: 변수가 선언된 block애서 참조 가능

 

이 static은 File Scope를 가지고 컴파일 시 메모리에 할당되는 전역변수에 비해 메모리에서 이점을 볼 수 있다.