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로 취급합니다.