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

C 스토리지 클래스

C 스토리지 클래스

이 자습서에서는 지역 및 전역 변수의 범위와 수명에 대해 배웁니다. 또한 정적 및 레지스터 변수에 대해 학습합니다.

C 프로그래밍의 모든 변수에는 유형과 저장 클래스라는 두 가지 속성이 있습니다.

유형은 변수의 데이터 유형을 나타냅니다. 그리고 스토리지 클래스는 변수의 범위, 가시성 및 수명을 결정합니다.

4가지 유형의 스토리지 클래스가 있습니다.

  1. 자동
  2. 외부
  3. 정적
  4. 등록
<시간>

로컬 변수

블록 내부에 선언된 변수는 자동 또는 로컬 변수입니다. 지역 변수는 선언된 블록 내부에만 존재합니다.

예를 들어보겠습니다.

#include <stdio.h>

int main(void) {
  
  for (int i = 0; i < 5; ++i) {
     printf("C programming");
  }
  
 // Error: i is not declared at this point
  printf("%d", i);  
  return 0;
}

위의 프로그램을 실행하면 undeclared identifier i 오류가 발생합니다. . i 때문입니다. for 내부에 선언됩니다. 루프 블록. 블록 외부에서는 선언되지 않습니다.

다른 예를 들어보겠습니다.


int main() {
    int n1; // n1 is a local variable to main()
}

void func() {
   int n2;  // n2 is a local variable to func()
}

위의 예에서 n1 main()에 로컬입니다. 및 n2 func()에 로컬입니다. .

즉, n1에 액세스할 수 없습니다. func() 내부의 변수 main() 내부에만 존재하므로 . 마찬가지로 n2에 액세스할 수 없습니다. main() 내부의 변수 func() 내부에만 존재하므로 .

<시간>

전역 변수

모든 함수 외부에서 선언된 변수를 외부 또는 전역 변수라고 합니다. 프로그램 내의 모든 기능에서 액세스할 수 있습니다.

<시간>

예시 1:전역 변수

#include <stdio.h>
void display();

int n = 5;  // global variable

int main()
{
    ++n;     
    display();
    return 0;
}

void display()
{
    ++n;   
    printf("n = %d", n);
}

출력

n = 7

전역 변수가 file1에 선언되어 있다고 가정합니다. . 다른 파일 file2에서 해당 변수를 사용하려고 하면 , 컴파일러는 불평할 것입니다. 이 문제를 해결하려면 키워드 extern file2에서 사용됩니다. 외부 변수가 다른 파일에 선언되었음을 나타냅니다.

<시간>

변수 등록

register 키워드는 레지스터 변수를 선언하는 데 사용됩니다. 레지스터 변수는 지역 변수보다 빠를 것으로 예상되었습니다.

그러나 최신 컴파일러는 코드 최적화에 매우 능숙하며 레지스터 변수를 사용하면 프로그램이 더 빨라질 가능성이 거의 없습니다.

주어진 애플리케이션에 대해 코드를 최적화하는 방법을 알고 있는 임베디드 시스템에서 작업하지 않는 한 레지스터 변수를 사용하지 않습니다.

<시간>

정적 변수

정적 변수는 static을 사용하여 선언됩니다. 예어. 예를 들어;

static int i;

정적 변수의 값은 프로그램이 끝날 때까지 유지됩니다.

<시간>

예시 2:정적 변수

#include <stdio.h>
void display();

int main()
{
    display();
    display();
}
void display()
{
    static int c = 1;
    c += 5;
    printf("%d  ",c);
}

출력

6 11

첫 번째 함수 호출 중에 c 값 1로 초기화됩니다. 값이 5 증가합니다. 이제 c의 값이 화면에 인쇄되는 6입니다.

두 번째 함수 호출 중에 c 다시 1로 초기화되지 않습니다. c 때문입니다. 정적 변수입니다. 값 c 5만큼 증가합니다. 이제 값은 11이 되고 화면에 인쇄됩니다.


C 언어

  1. C# 변수 및 (기본) 데이터 형식
  2. C# 변수 범위
  3. C# 정적 키워드
  4. C++ 클래스 템플릿
  5. C 변수, 상수 및 리터럴
  6. C++ 변수 및 유형:int, double, char, string, bool
  7. 자바 - 변수 유형
  8. C - 변수
  9. C - 스토리지 클래스
  10. C - 범위 규칙