티스토리 뷰

프로그래밍

변수에 대한 고찰

rlawlstjd007 2016. 9. 13. 12:17

 변수란 무엇일까? 항상 변수를 사용하지만 이에 대해서 정확히 정의 내리긴 쉽지 않았다. 시스템 적으로 변수가 

어떻게 초기화가 될지 궁금했다. 


 변수란 '데이터가 저장되어 있는 주소를 치환한 것' 이라는 사실을 알게 되었다. 예를 들어 설명해 보겠다.

 ( C를 기준으로 한다. )

 int a = 4;


 위와 같은 명령을 실행했다고 보자. 그러면 시스템적으로 a 가 초기화 되는 과정을 살펴보자.



 우선 4라는 값이 메모리 어딘가에 저장이 된다. 이때 4는 리터럴 값으로 int로 인식이 된다. 그래서 4바이트 공간이 

할당이 되어 0x1016 번지에 저장이 된다. 그 다음 int 형 a를 선언했기 때문에 int 형은 4 바이트 공간이 할당이 되고

이 공간의 주소를 가지고 있는 a를 통해 0x1000 번지를 부를수 있게 한 것이다. 그 후에 0x1016 번지에 저장되 있는

4라는 값이 복사되어 0x1000 번지에 들어가게 되는 것이다. 



 


 결과는 위 사진과 같다. 그런데 여기서 드는 의문점이 있다. 코드상에서 a를 호출 하면 결과는 항상 변수에 있는 값이 

반환 된다는 것이다. 왜 그럴까? a는 주소를 치환한 것이기 때문에 데이터가 저장된 공간을 가리키는건 맞지만 그 값을

가리키는 건 아니지 않은가? 


 결론 부터 말하자면 그렇게 설계 되었기 때문이다. 기본형은 기본적으로 변수의 값을 반환하기로 말이다. 반대로 참조형은

주소를 반환하기로 되어 있는 것처럼 말이다. 몰론 다른 언어는 다를 수 있다.

반응형
댓글