여기에는 두 가지 별도의 개념이 있습니다 -
- 이름에 액세스할 수 있는 위치를 결정하는 범위 - 전역 및 로컬
- 변수가 생성되고 소멸되는 시기를 결정하는 저장 기간 - 정적 및 자동
범위
지역 변수는 해당 함수 또는 코드 블록 내부에 있는 명령문에서만 사용할 수 있습니다. 지역 변수는 자체적으로 기능을 수행하는 것으로 알려져 있지 않습니다.
예시
#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 키워드는 더 이상 자동 저장 기간을 의미하지 않습니다. 이제 변수의 이니셜라이저에서 추론된 자동 유형을 의미합니다.