산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C - 스토리지 클래스

스토리지 클래스는 C 프로그램 내에서 변수 및/또는 함수의 범위(가시성)와 수명을 정의합니다. 수정하는 유형보다 우선합니다. C 프로그램에는 4개의 서로 다른 스토리지 클래스가 있습니다.

자동 스토리지 클래스

자동 스토리지 클래스는 모든 로컬 변수에 대한 기본 스토리지 클래스입니다.

{
   int mount;
   auto int month;
}

위의 예는 동일한 스토리지 클래스에 있는 두 개의 변수를 정의합니다. 'auto'는 함수 내에서만 사용할 수 있습니다. 즉, 지역 변수입니다.

저장소 등급 등록

등록 스토리지 클래스는 RAM 대신 레지스터에 저장해야 하는 로컬 변수를 정의하는 데 사용됩니다. 이는 변수의 최대 크기가 레지스터 크기(보통 한 단어)와 같으며 단항 '&' 연산자를 적용할 수 없음을 의미합니다(메모리 위치가 없기 때문에).

{
   register int  miles;
}

레지스터는 카운터와 같이 빠른 액세스가 필요한 변수에만 사용해야 합니다. 또한 '레지스터'를 정의한다고 해서 변수가 레지스터에 저장되는 것은 아닙니다. 이는 하드웨어 및 구현 제한 사항에 따라 레지스터에 저장될 수 있음을 의미합니다.

정적 스토리지 클래스

정적 스토리지 클래스는 범위에 들어오고 나갈 때마다 로컬 변수를 생성 및 삭제하는 대신 프로그램의 수명 동안 로컬 변수를 유지하도록 컴파일러에 지시합니다. 따라서 지역 변수를 정적으로 만들면 함수 호출 간에 값을 유지할 수 있습니다.

정적 수정자는 전역 변수에도 적용될 수 있습니다. 이 작업이 완료되면 해당 변수의 범위가 선언된 파일로 제한됩니다.

C 프로그래밍에서 정적일 때 전역 변수에 사용되는 경우 해당 클래스의 모든 개체에서 해당 멤버의 복사본 하나만 공유합니다.

라이브 데모
#include <stdio.h>
 
/* function declaration */
void func(void);
 
static int count = 5; /* global variable */
 
main() {

   while(count--) {
      func();
   }
	
   return 0;
}

/* function definition */
void func( void ) {

   static int i = 5; /* local static variable */
   i++;

   printf("i is %d and count is %d\n", i, count);
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

extern 스토리지 클래스

외부 스토리지 클래스는 모든 프로그램 파일에서 볼 수 있는 전역 변수의 참조를 제공하는 데 사용됩니다. 'extern'을 사용하면 변수를 초기화할 수 없지만 변수 이름은 이전에 정의된 저장 위치를 ​​가리킵니다.

여러 파일이 있고 다른 파일에서도 사용될 전역 변수나 함수를 정의하면 extern 정의된 변수 또는 함수의 참조를 제공하기 위해 다른 파일에서 사용됩니다. 이해를 돕기 위해 extern 다른 파일에서 전역 변수 또는 함수를 선언하는 데 사용됩니다.

extern 수정자는 아래에 설명된 것과 같이 동일한 전역 변수 또는 함수를 공유하는 두 개 이상의 파일이 있을 때 가장 일반적으로 사용됩니다.

첫 번째 파일:main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main() {
   count = 5;
   write_extern();
}

두 번째 파일:support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void) {
   printf("count is %d\n", count);
}

여기, extern count를 선언하는 데 사용되고 있습니다. 두 번째 파일에서 첫 번째 파일인 main.c에 정의가 있습니다. 이제 이 두 파일을 다음과 같이 컴파일하십시오 -

$gcc main.c support.c

실행 가능한 프로그램 .out을 생성합니다. . 이 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -

count is 5

C 언어

  1. C++ 클래스 및 개체
  2. C++ friend 함수 및 friend 클래스
  3. C 스토리지 클래스
  4. C++의 구조 및 클래스
  5. 예제가 있는 Python 문자열 count()
  6. 예제가 있는 Python 목록 count()
  7. 자바 - 객체와 클래스
  8. C++의 스토리지 클래스
  9. C++의 인터페이스(추상 클래스)
  10. C# - 클래스