개발공부/C++
전역변수와 정적변수
dyson_ok
2019. 10. 21. 13:53
#include <iostream>
using namespace std;
int value = 123;
int main()
{
cout << value << endl;
int value = 1; //namehiding
cout << ::value << endl; //global scope operator(::)
cout << value << endl;
return 0;
}
123
123
1
전역변수는 Scope를 항상 잘 염두하고 코딩해야한다.
void doSomething()
{
int a = 1;
++a;
cout << a << endl;
}
int main()
{
doSomething();
doSomething();
return 0;
}
2
2
위 예제에서 static 키워드를 붙이면
void doSomething()
{
static int a = 1;
++a;
cout << a << endl;
}
int main()
{
doSomething();
doSomething();
return 0;
}
2
3
static을 선언하면 같은 메모리(주소)를 사용하기 때문에 항상 초기화가 먼저 되어야 쓸 수 있다.