전역변수, static 변수, register 변수

유석현(SeokHyun Yu)·2022년 7월 17일

C

목록 보기
11/26
post-thumbnail

1. 전역변수

int num; //전역변수

int main(void)
{
	...
}
  • 전역변수의 특징
- 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재한다.

-1회 초기화 되기 때문에 별도의 값으로 초기화하지 않으면 0으로 초기화된다.

- 프로그램 전체 영역 어디서든 접근이 가능하다.

int num;

int main(void)
{
   int num;
}

전역변수와 동일한 이름의 지역변수가 선언되면 지역변수가 우선이다.


2. static 변수

void SimpleFunc(void)
{
   static int num=0;
   printf("%d", num);
   num++;
}

int main(void)
{
   SimpleFunc(); // 0 출력
   SimpleFunc(); // 1 출력
   SimpleFunc(); // 2 출력

   return 0;
}
  • static변수의 특징
- 선언된 함수 내에서만 접근이 가능하다. (지역변수 특성)

-1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다. (전역변수 특성)

3. register 변수

지역변수에는 다음과 같이 register라는 선언을 추가할 수 있다.

int main(void)
{
   register int num;
   
   ...
}

위와 같이 선언이 되면 변수 numCPU에 존재하는 '레지스터'라는 메모리 공간에 저장될 확률이 높아진다.

말 그대로 확률이 높아지는 것이지 최종 결정은 컴파일러가 내린다.

우리가 아무리 register 선언을 추가해도 컴파일러가 합당하지 않다고 판단하면 레지스터에 할당하지 않는다.

profile
Backend Engineer

0개의 댓글