Written on
·
292
·
Edited
1
int a = 1;
void doSomething() {
++a;
cout << a << endl;
}
int main() {
int a = 10;
doSomething();
doSomething();
doSomething();
doSomething();
}
선생님께서 19분 38초 쯤에 이 코드에 관해서,
<이런 식으로 int a = 10을 추가해 무의식적으로 a가 doSomething() 안에서 10이 출력되길 바랄 수 있는데 전역 변수는 어디서나 값을 막 바꿔버릴 수 있다.
그럼 바뀐 값이 doSomething()에서 출력되는 것>이라고 설명하셨습니다.
그런데,
선생님께서 설명하신대로라면, 바뀐 값이니 10, 11, 12, 13이 나와야 하는데,
저 코드를 출력하면 2, 3, 4, 5가 출력됩니다...혹시 선생님께서 잘못 설명하신 걸까요?ㅠ
그래서 전역 변수는 어디서나 값을 막 바꿔버릴 수 있다는 설명도 헷갈립니다ㅠ
Answer 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
전역 변수는 어디서든 값을 바꿀 수 있기 때문에, int a = 1
로 선언된 전역 변수가 doSomething()
함수 안에서 2, 3, 4, 5, ...
와 같이 출력되는 것입니다.main()
함수 안에서 새로운 지역 변수를 int a = 10;
과 같이 선언하였지만, doSomething()
함수가 접근할 수 있고, 하고 있는 변수는 전역 변수 a
입니다.
강의 20:37 경 부분에서, 전역 변수의 이름을 g_a
와 같이 변경해주는 부분을 참고해보시면 이해가 더 수월하실 것 같습니다.