Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C의 스토리지 클래스

<시간/>

C 언어에서 변수 및 함수의 기능은 q 변수 또는 함수의 가시성 및 범위와 같은 저장소 클래스로 설명됩니다.

C 언어의 스토리지 클래스에는 자동 변수, 외부 변수, 정적 변수, 레지스터 변수의 4가지 유형이 있습니다.

자동

자동 스토리지 클래스는 모든 로컬 변수에 대한 기본 스토리지 클래스입니다. 함수가 호출될 때 생성됩니다. 함수의 실행이 완료되면 변수는 자동으로 소멸됩니다.

함수에 대해 지역적이기 때문에 지역 변수라고도 합니다. 기본적으로 컴파일러에서 가비지 값을 할당합니다.

범위 - 자동 변수는 펑션 블록에 대한 로컬 변수입니다.

기본값 - Garbage 값은 기본 초기화 값입니다.

평생 - auto 변수의 수명은 변수가 정의된 블록에 의해 제한됩니다.

다음은 C 언어의 자동 변수 예입니다.

예시

#include <stdio.h>
int main() {
   auto int a = 28;
   int b = 8;
   printf("The value of auto variable : %d\n", a);
   printf("The sun of auto variable & integer variable : %d", (a+b));
   return 0;
}

출력

The value of auto variable : 28
The sun of auto variable & integer variable : 36

외부

외부 변수는 전역 변수라고도 합니다. 이러한 변수는 함수 외부에서 정의됩니다. 이러한 변수는 함수 실행 전반에 걸쳐 전역적으로 사용할 수 있습니다. 전역 변수의 값은 함수에 의해 수정될 수 있습니다.

범위 - 그들은 어떤 기능에도 구속되지 않습니다. 프로그램의 모든 곳에 있습니다. 즉, 글로벌합니다.

기본값 - 전역 변수의 기본 초기화 값은 0입니다.

평생 - 프로그램 실행이 끝날 때까지.

다음은 C 언어의 extern 변수의 예입니다.

예시

#include <stdio.h>
extern int x = 32;
int b = 8;
int main() {
   auto int a = 28;
   extern int b;
   printf("The value of auto variable : %d\n", a);
   printf("The value of extern variables x and b : %d,%d\n",x,b);
   x = 15;
   printf("The value of modified extern variable x : %d\n",x);
   return 0;
}

출력

The value of auto variable : 28
The value of extern variables x and b : 32,8
The value of modified extern variable x : 15

정적

정적 변수는 한 번만 초기화됩니다. 컴파일러는 프로그램이 끝날 때까지 변수를 유지합니다. 정적 변수는 함수 내부 또는 외부에서 정의할 수 있습니다.

범위 - 블록에 로컬입니다.

기본값 - 기본 초기화 값은 0입니다.

평생 - 프로그램 실행이 끝날 때까지.

다음은 C 언어의 정적 변수 예입니다.

예시

#include <stdio.h>
int main() {
   auto int a = -28;
   static int b = 8;
   printf("The value of auto variable : %d\n", a);
   printf("The value of static variable b : %d\n",b);
   if(a!=0)
   printf("The sum of static variable and auto variable : %d\n",(b+a));
   return 0;
}

출력

The value of auto variable : -28
The value of static variable b : 8
The sum of static variable and auto variable : -20

등록

레지스터 변수는 컴파일러에게 메모리 대신 CPU 레지스터에 변수를 저장하도록 지시합니다. 자주 사용하는 변수는 레지스터에 보관되며 더 빠르게 액세스할 수 있습니다. 이러한 변수의 주소는 절대 얻을 수 없습니다.

범위 - 함수에 로컬입니다.

기본값 - 기본 초기화 값은 쓰레기 값입니다.

평생 - 그것이 정의된 블록의 실행이 끝날 때까지.

다음은 C 언어의 레지스터 변수 예입니다.

예시

#include <stdio.h>
int main() {
   register char x = 'S';
   register int a = 10;
   auto int b = 8;
   printf("The value of register variable b : %c\n",x);
   printf("The sum of auto and register variable : %d",(a+b));
   return 0;
}

출력

The value of register variable b : S
The sum of auto and register variable : 18