개발공부/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을 선언하면 같은 메모리(주소)를 사용하기 때문에 항상 초기화가 먼저 되어야 쓸 수 있다.