본문 바로가기

프로그래밍/C/C++

storage class

 

storage class 라는건 변수의 생성,소멸의 시기, 장소,위치를 결정하는 예약어이다.

보통 생략할 때가 많은데, 이런 경우에는 auto 라는 storage class 로 설정된것이다.

형식>

storage class 자료형 변수명. -> auto float fsum;

종류>

auto - 메모리에서 생성되며, 지역변수이다. 쓰레기값이 초기값으로 들어가며, 함수안에서만 선언가능. 그 함수에서만 사용가능하게 된다.즉 지역변수라는 얘기다.

register - 레지스터에 생성되고, 역시 지역변수.

static - 메모리에 생성되지만, 전역,지역이 가능하다. 초기화가 자동으로 되기때문에 신경쓰지 않아도 되고, 함수밖에서 선언하면 전역, 함수내에서 선언하면 지역변수가 된다.

extern - 역시 메모리에서 생성, 전역.지역다 가능하다. 보통은 여러개의 파일을 묶어 쓸때 (프로젝트로) 사용하며, 단일 파일에서 쓸경우에는 보통 static 을 주로 사용한다.

----------------------------------------------------------------------

예1>

#include <stdio.h>

void ten(int x)
{
 auto int a=1;
 printf("%d %d",a,x);
} //여기까지 변수 a,x사용
void main()
{
 auto int a=10;
 {
  auto int b=20;
  printf("b = %d\n",b);
 } // 변수 b의 적용 범위 {} 로 감싸있는 부분에서만 사용가능한 지역변수가 된다.
 
 ten(22);
 printf("a = %d\n",a);
 printf("b = %d\n",b); //이부분에서 변수 b가 정의 되지 않았다고 에러가 난다.
}

----------------------------------------------------------------------

#include <stdio.h>

static int num = 50; //전역변수로 num을 50으로 초기화.

...

----------------------------------------------------------------------