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

C++에서 정적, 자동, 전역 및 지역 변수의 차이점

<시간/>

여기에는 두 가지 별도의 개념이 있습니다 -

  • 이름에 액세스할 수 있는 위치를 결정하는 범위 - 전역 및 로컬
  • 변수가 생성되고 소멸되는 시기를 결정하는 저장 기간 - 정적 및 자동

범위

지역 변수는 해당 함수 또는 코드 블록 내부에 있는 명령문에서만 사용할 수 있습니다. 지역 변수는 자체적으로 기능을 수행하는 것으로 알려져 있지 않습니다.

예시

#include <iostream>
using namespace std;

int main () {
   // Local variable declaration:
   int a, b;
   int c;

   // actual initialization
   a = 10;
   b = 20;
   c = a + b;

   cout << c;
   return 0;
}

이것은 출력을 줄 것입니다 -

출력

30

전역 변수는 일반적으로 프로그램의 맨 위에 있는 모든 함수 외부에서 정의됩니다. 전역 변수는 프로그램 수명 동안 값을 유지합니다. 전역 변수는 모든 함수에서 액세스할 수 있습니다.

예시

#include <iostream>
using namespace std;

// Global variable declaration:
int g;

int main () {
   // Local variable declaration:
   int a, b;

   // actual initialization
   a = 10;
   b = 20;
   g = a + b;

   cout << g;
   return 0;
}

이것은 출력을 줄 것입니다 -

출력

30

저장 기간

자동 변수는 실행이 범위를 벗어날 때 수명이 종료되고 범위가 다시 입력될 때 다시 생성되는 지역 변수입니다.

예시

for (int i =0 0; i < 5; ++i) {
   int n = 0;
   printf("%d ", ++n); // prints 1 1 1 1 1 - the previous value is lost
}

정적 변수에는 프로그램이 끝날 때까지 지속되는 수명이 있습니다. 로컬 변수인 경우 실행이 범위를 벗어날 때 값이 유지됩니다.

for (int i = 0; i < 5; ++i) {
   static int n = 0;
   printf("%d ", ++n); // prints 1 2 3 4 5 - the value persists
}

정적 키워드는 정적 저장 기간 외에도 다양한 의미를 갖습니다. 또한 C++에서 auto 키워드는 더 이상 자동 저장 기간을 의미하지 않습니다. 이제 변수의 이니셜라이저에서 추론된 자동 유형을 의미합니다.