프로그래밍 언어/C언어

C언어 Storage Class, Auto, Register, Extern, Static이란?

원원 2022. 1. 10. 21:47

안녕하세요 오늘은 C언어 Storage Class, Auto, Register, Extern, Static에 대해 알아보겠습니다.

 

Storage Class : 기억 영역을 분류하기 위해서 사용되는 용어입니다. 이때 Class는 객체의 Class랑은 상관이 없고 그냥 Class입니다

Auto : 지역변수에서 저장되는 공간입니다. 일반적으로 지역변수들은 Auto를 생략한거라고 봐도 됩니다. Auto의 범위는 특정 블럭입니다.

1
2
3
4
5
6
int calc(void)
{
    int a=1;
    auto int b=2;
    return a+b;
}
cs

a와 b의 선언은 같습니다. 또한 a,b의 생명은 2~6줄에만 있습니다.

 

Register : 변수를 빠르게 접근하기 위해 RAM 대신에 CPU 레지스터에 로컬 변수를 저장하는 기능입니다. Register를 굳이 안써도 CPU가 최적화해서 Register를 사용하고 register선언을 너무 많이하면 cpu가 최적화를 못 할 수도 있습니다. 

 

Extern : 두 개 이상의 파일 간에 공유되는 전역 함수 또는 변수가 있을 때 사용됩니다.extern는 원본 파일에 이미 정의된 변수 또는 함수의 참조를 제공하기 위해 다른 파일에서 전역 변수 또는 함수를 선언하는 데 사용됩니다. extern 키워드를 사용하여 정의된 변수를 전역변수라고 합니다. 이러한 변수는 프로그램 전체에서 엑세스할 수 있습니다. extern 변수는 초기화할 수 없으며 원본 파일에 이미 정의되어 있습니다.

 

Static : Static 변수는 함수/파일 내에서 local static 변수로 사용됩니다. 전역 변수로도 사용 가능합니다. extern은 한 파일 내에서 전역변수로 사용 가능하고 extern은 두 개 이상의 파일에서 전역변수로 사용 가능합니다