전역변수란?
- 전역에서 사용가능
- 프로그램이 시작되어 메모리에 할당이 되면, 죽을 때까지 계속 메모리에 남아있는 친구
- 사용 예시
/* main.cpp */
#include <iostream>
using namespace std;
string globalVar;
void func1()
{
globalVar = "Hi";
}
void func2()
{
globalVar = "Bye";
}
int main(void)
{
func1();
func2();
cout << globalVar << "\\n";
return 0;
}
Extern
- 변수를 구현 파일에서 정의할 때 파일 마다 새로운 인스턴스가 생성됨
⇒ 중복으로 전역변수가 생성됨 ⇒ extern을 사용
- 헤더파일과 cpp 파일을 분리했을 때 전역변수를 사용하기 위해 필요한 용어
정적변수란?
- 전역변수와 똑같이 시작 시 할당되어 죽을 때까지 메모리 점유
지역변수 vs 정적변수
#include "main.h"
using namespace std;
int func1()
{
int globalVar = 1;
return globalVar++;
}
int main(void)
{
cout << func1() << endl;
cout << func1() << endl;
return 0;
}
//결과
1
1
#include "main.h"
using namespace std;
int func1()
{
static int globalVar = 1;
return globalVar++;
}
int main(void)
{
cout << func1() << endl;
cout << func1() << endl;
return 0;
}
//결과
1
2