:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
22/04/29 11:58
a = 3 입니다.
{ } 안에서 선언된 변수는 { } 끝나는 순간 사라진다고 보셔도 되영. 위에 a랑 밑에 a는 다른 변수입니다.
22/04/29 12:05
https://www.geeksforgeeks.org/static-and-dynamic-scoping/
scope란 개념을 아시면 보다 이해하기 쉬우실 것 같습니다.
22/04/29 12:08
a = 3 입니다.
int a = 3; ----- 1 { int a = 2; ----- 2 } 여기서 1번 a 를 선언할 때 값이 저장되는 위치가 생기고 2번 a 를 [선언] 하면 새롭게 값이 저장되는 위치가 생깁니다. 이후 2 ~ } 사이에 호출되는 a 는 2번 a 가 호출 되고요. } 에서 2번 a 가 제거되고요. 이후 호출되는 a 는 1번 a 가 호출 됩니다.
22/04/29 13:17
(수정됨) 다른 분들이 많이 설명해주셨지만,
main에서 선언한 a = 3이 메모리에 올라가게 됩니다. 그리고 function 함수가 실행되게 되죠. function 함수 영역 안에 a가 2가 메모리에 올라가게 되는데 두개는 이름이 같아도 별개의 영역입니다. main scope { a = 3; function { a = 2; } 출력 } 이런 느낌으로 보시면 되는데 중괄호는 scope 영역이라 함수가 종료가 되면 스택 메모리에서 제거가 됩니다. 그래서 print를 a를 하게 되면 main에서 불러오는 a를 출력하게 됩니다. function 안에서 출력하게 되면 2가 출력되겠지요. 메모리영역과 같이 공부하면 좋긴한데.. 이제 시작하신거니 Too Much 할수도 있습니다. 디버깅 활용해서 찍어보시는게 가장 속편하긴 할겁니다.
22/04/29 14:24
스택 메모리 영역을 이해 하라고 나온 과제인거 같은데
메모리 주소 찍어가면서 확실하게 이해 하시는게 낫습니다.. 이 다음에 콜오브벨류와 콜오브레퍼런스와 포인터가 나올꺼거든요..
|