IT 프로그래밍/C++

[따배시 1.6~7] 키워드와 식별자 이름짓기, 지역범위

기술1 2024. 3. 5. 13:58
반응형

프로그래머의 관습적인 사용 방법


변수를 대문자로는 쓰지 않습니다. - 매크로에 쓰이기 때문에

 

그리고 변수는 띄어 쓸 수 없기 때문에 number of apples 같은 변수를 만들려면 _ 를 써서 number_of_apples 이런 식으로 해주면 됩니다.

 

지역범위


int main()
{
	int x(0); // x = 0;


	return 0;
}

여기서 x는 0으로 {} 안에 정의되어 있습니다. 이것은 {}를 벗어나면 x는 사라지는 값이 되게 됩니다. 중괄호의 역할은 영역을 분리해주는 것입니다.

 

#include <iostream>



int main()
{
	int x = 0;
	int x = 1;
	{
		int x = 1;
	}

	{
		int x = 2;
	}


	return 0;
}

이런식으로 int x = 0 후에 int x = 1 이런식으로 초기화해주면 여러 번 초기화했다고 오류가 뜨게 됩니다. 

 

그런데 만약

int main()
{
	int x = 0;
	{
		int x = 1;
	}

	{
		int x = 2;
	}


	return 0;
}

이 경우에는 오류가 생기지 않습니다. {]를 통해 각각의 x들이 다른 영역에 속해있기 때문입니다. 저기에 쓴 3개의 int x 는 이름만 같은 뿐 전부 다른 각각이라는 것을 아셔야 합니다. 

 

int main()
{
	int x = 0;

	cout << x << " " << &x << endl;
	{
		int x = 1;

		cout << x << " " << &x << endl;
	}

	{
		int x = 2;

		cout << x << " " << &x << endl;
	}


	return 0;
}

 

위에 코드를 출력했을 때입니다. 각각의 x의 주소가 다른 것을 볼 수 있습니다. &x는 주소값을 출력해주는 포인터입니다. 여기서 알 수 있듯이 지역변수는 해당 지역을 벗어나면 사용할 수 없는 것이며 각각 다른 x라는 것을 알 수 있습니다. 

 

int main()
{
	int x = 0;

	cout << x << " " << &x << endl;
	{
		x = 1;

		cout << x << " " << &x << endl;
	}


	return 0;
}

중괄호 안의 중괄호에 x = 1이라고 새로운 x를 정의하지 않고 x = 1만 해준다면 이 두개는 같은 x로 취급합니다. 

 

 

반응형