본문 바로가기
컴퓨터/프로그래밍

auto, register, static, extern의 차이

by Begi 2019. 11. 14.
반응형

auto는 함수 내의 지역변수를 나타낸다. 함수 내의 변수는 자동으로 지역변수로 정의되기 때문에 생략해도 된다. 즉 아래의 두 명령은 동일하다.

int a;

auto int a;


register는 지역변수를 RAM이 아닌 CPU의 레지스터에 저장하도록 한다. 레지스터에 저장하면 실행 속도가 빨라진다.

register int a;


static은 지역변수와 전역변수에 사용할 수 있는데, 두 경우는 서로 다른 의미를 가진다. 

지역변수에 static을 사용하면 함수를 빠져 나와도 static으로 정의된 변수의 값을 유지한다.

전역변수에 static을 사용하면 다른 파일에서 extern으로 사용할 수 없도록 한다. 다른 파일에서 static 변수를 extern하면 컴파일 중 에러 메세지를 출력한다.


extern은 다른 파일에 정의된 전역변수를 사용할 수 있도록 한다. 예를 들면 어떤 파일에서 int a 전역변수를 선언했다면 다른 파일에서 이 변수를 사용하기 위해서는 다음과 같이 선언해야 한다.

extern int a;


반응형

댓글