문제
C 언어의 다른 스토리지 클래스는 무엇입니까? 프로그램으로 설명하시겠습니까?
해결책
스토리지 클래스는 C 프로그램 내에 존재하는 변수 또는 함수의 범위와 수명으로 정의됩니다.
스토리지 클래스
다음은 C −
의 스토리지 클래스입니다.- 자동
- 외부
- 정적
- 등록
자동 변수/로컬 변수
- 키워드 - 자동
- 이를 지역 변수라고도 합니다.
- 범위 -
-
지역 변수의 범위는 선언된 블록 내에서 사용할 수 있습니다.
-
이러한 변수는 블록 내에서 선언됩니다.
-
- 기본값 - 쓰레기 값
예시
#include<stdio.h>
void main (){
auto int i=1;{
auto int i=2;{
auto int i=3;
printf ("%d",i);
}
printf("%d", i);
}
printf("%d", i);
} 출력
3 2 1
전역 변수/외부 변수
- 키워드 - 외부
-
이러한 변수는 블록 외부에서 선언되므로 전역 변수라고도 합니다.
-
범위 − 전역 변수의 범위는 프로그램 전체에서 사용할 수 있습니다.
- 기본값 - 0
예시
#include<stdio.h>
extern int i =1; /* this ‘i’ is available throughout program */
main (){
int i = 3; /* this ‘i' available only in main */
printf ("%d", i);
fun ();
}
fun (){
printf ("%d", i);
} 출력
31
정적 변수
- 키워드 - 정적
- 범위 − 정적 변수의 범위는 프로그램 전체와 함수 호출 사이에 값을 유지하는 것입니다.
- 정적 변수는 한 번만 초기화됩니다.
- 기본값 - 0
예시
#include<stdio.h>
main (){
inc ();
inc ();
inc ();
}
inc (){
static int i =1;
printf ("%d", i);
i++;
} 출력
1 2 3
변수 등록
- 키워드 - 등록
-
레지스터 변수 값은 일반 변수가 저장되는 메모리가 아닌 CPU 레지스터에 저장됩니다.
-
레지스터는 CPU의 임시 저장 장치입니다.
예시
#include<stdio.h>
main (){
register int i;
for (i=1; i< =5; i++)
printf ("%d",i);
} 출력
1 2 3 4 5