인프런 커뮤니티 질문&답변

권혁준님의 프로필 이미지
권혁준

작성한 질문수

홍정모의 따라하며 배우는 C언어

for문에서 지역변수 scope 관련 질문

작성

·

254

0

 
변수 num의 scope가 for문 블록 {}이라서 반복 수행을 할 때마다 메모리상에서 할당되었다가 소멸되는 것을 반복하는 것은 알겠는데..
그럼 for문 초기식에서 선언된 변수 i의 scope는 정확히 어떻게 되는 건가요??
 
물론 변수 i는 for문의 초기식에서 지역변수로 선언된 거기 때문에 for문을 탈출하면 메모리상에서 사라지겠지만 접근할 수 있는 범위나 메모리상에 존재하는 기간만 놓고 봐도 변수 num보다는 scope가 넓은 것 같은데 정확한 scope를 모르겠어서 질문올립니다..
 
감사합니다.

답변 1

0

안녕하세요 :)

초기식의 i의 scope도 for문의 { ... } 안입니다.

"scope, 그 중에서도 block scope는 중괄호 안!" 정도로 기억하시면 이해가 수월할 겁니다.

 

그리고, 첨부해주신 코드 상에서 num보다 i가 먼저 할당되기는 하나, 

scope가 동일하기에 메모리에서 사라지는 시점은 같습니다 :)

 

감사합니다.

 

참고를 위해 아래 링크를 남겨드립니다 :)

https://stackoverflow.com/questions/35659818/variable-scope-in-for-loops

권혁준님의 프로필 이미지
권혁준
질문자

근데 변수 num 같은 경우는 for문 block을 반복수행 할 때마다 메모리에서 사라졌다가 int i = 0;으로 다시 생성되는데 변수 i 같은 경우는 for문이 다 종료되기 전까지는 메모리 상에서 계속 남아있으면서 i++로 업데이트 되는 거 아닌가요?? 

저는 test case 돌려보니까 두 변수가 사라지는 시점이 다른 거 같아서 scope가 서로 다르지 않을까 하고 질문 드렸었어요..

아아, 그 점이 헷갈리셨군요 :)

네, 각각의 num 하나하나가 새롭게 할당되고 사라질 수는 있어도, 중요한 건 num의 유효 범위가 블럭 이상을 넘어가지는 않는다는 말씀입니다. i도 마찬가지이구요.

제가 말씀드린 "메모리에서 사라지는 시점"이란 더 이상 num이 새로이 할당되지도, 변수값이 유효하지도 않은 시점을 말씀드린 것입니다.

각각의 변수가 생성되고 사라지는 시점에서 혼란이 오셨다면, 

"num 변수값을 사용할 수 있는 범위, i를 사용할 수 있는 범위"를 비교해보세요..!

권혁준님의 프로필 이미지
권혁준

작성한 질문수

질문하기