Latest web development tutorials

C 스토리지 클래스

스토리지 클래스 정의 C 프로그램 변수 / 범위 (가시성) 기능과 수명주기. 그들이 유형을 수정하기 전에이 지정자는 배치. 프로그램에서 사용할 수있는 스토리지 클래스 C입니다 다음과 같습니다 :

  • 자동
  • 레지스터
  • 정적 인
  • 통근자

자동 저장 클래스

자동 스토리지 클래스는 모든 지역 변수의 기본 저장 클래스입니다.

{
   int mount;
   auto int month;
}

위의 예는 동일한 스토리지 클래스 두 변수가 자동으로 만, 즉 자동 로컬 변수를 수정, 함수 내에서 사용할 수있는 정의합니다.

스토리지 클래스를 등록

등록 저장소 클래스 대신 지역 변수의 RAM 레지스터에 저장 정의하는 데 사용됩니다.이 변수의 최대 크기는 레지스터 (일반적으로 단어)의 크기와 동일하고 (이것은 어떤 메모리 장소가 없기 때문에) 그 단항 '&'연산자 적용 할 수 없다는 것을 의미한다.

{
   register int  miles;
}

그러한 카운터 등의 변수에 빠르게 액세스 등록이 필요. 또한, '등록'의 정의가 변수 레지스터에 저장되는 것을 의미하지는 않으며,이 변수는 하드웨어 구현의 제한에 따라, 레지스터에 저장 될 수 있다는 것을 의미하는 것이 주목되어야한다.

정적 스토리지 클래스

정적 스토리지 클래스는 당신이 범위를 벗어나 이동 생성 및 파괴 될 때마다 입력 할 필요없이, 프로그램의 수명주기에서 지역 변수의 존재를 유지하기 위해 컴파일러에 지시합니다.따라서, 정적 로컬 변수를 사용하는 함수 호출과 로컬 변수의 값을 유지하도록 변형 될 수있다.

정적 개질제는 전역 변수에 적용될 수있다. 정적 전역 변수를 수정 한 경우, 변수는 파일 명령문의 범위를 제한한다.

C에서 프로그래밍, 클래스의정적 데이터 멤버에 사용되는 경우 모든 개체는 구성원이 공유하는 클래스의 하나의 복사본 만 발생합니다.

#include <stdio.h>
 
/* 函数声明 */
void func(void);
 
static int count = 5; /* 全局变量 */
 
main()
{
   while(count--)
   {
      func();
   }
   return 0;
}
/* 函数定义 */
void func( void )
{
   static int i = 5; /* 局部静态变量 */
   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

통근 스토리지 클래스

통근 스토리지 클래스는 전역 변수에 대한 참조를 제공하는 데 사용되는 모든 프로그램 파일의 전역 변수를 표시한다.당신이 변수를 초기화 할 수 없습니다 '통근'를 사용하면 변수 이름은 이전에 정의 된 저장 위치를 ​​가리 킵니다.

여러 문서가 다른 문서에서 사용할 수있는 전역 변수 또는 함수를 정의 할 때, 당신은 변수 나 함수 정의 참조를 얻기 위해 다른 파일에서통근을사용할 수 있습니다. 이는 통근 다른 파일에서 전역 변수 또는 함수를 선언하는 데사용되는, 이해수있다.

통근 수정은 일반적으로 다음과 같이 두 개 이상의 파일이 동일한 전역 변수 또는 시간의 기능을 공유하고있을 때 사용된다 :

첫 번째 파일 : 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);
}

여기서, 제 2 파일통근 키워드는파일 main.c.에 정의 된 첫 번째 문에서계산하는데 사용됩니다 다음과 같이 이제 두 파일을 컴파일 :

 $gcc main.c support.c

이 프로그램이 실행되면, 그것은 다음과 같은 결과를 얻을 수, 실행 프로그램a.out으로 제조한다 :

5