• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

4.2 전역 변수의 값을 바꿨을 경우

23.06.06 22:26 작성 23.06.06 22:27 수정 조회수 214

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가 출력됩니다...혹시 선생님께서 잘못 설명하신 걸까요?ㅠ

그래서 전역 변수는 어디서나 값을 막 바꿔버릴 수 있다는 설명도 헷갈립니다ㅠ

 

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.06.07

안녕하세요, 답변 도우미 Soobak 입니다.

전역 변수는 어디서든 값을 바꿀 수 있기 때문에, int a = 1 로 선언된 전역 변수가 doSomething() 함수 안에서 2, 3, 4, 5, ... 와 같이 출력되는 것입니다.

main() 함수 안에서 새로운 지역 변수를 int a = 10; 과 같이 선언하였지만, doSomething() 함수가 접근할 수 있고, 하고 있는 변수는 전역 변수 a 입니다.

강의 20:37 경 부분에서, 전역 변수의 이름을 g_a 와 같이 변경해주는 부분을 참고해보시면 이해가 더 수월하실 것 같습니다.