CS

참조변수 vs 일반변수

개발기록 2024. 6. 21. 17:46

오늘은 참조변수와 일반변수에 대해 포스팅 하고자 한다.

 

위 내용에 대해서 이야기를 하기전에 참조변수가 무엇인지 일반변수가 무엇인지에 대해 먼저 알아보자.

 

1. 일반변수?


컴퓨터 프로그램에서 그 값이 일정하지 않고 상황에 따라 변경되는 값을 말하며 값을 저장하기 위해 크기가 일정한 메모리 공간을 할당받아 직접 저장한다. (Made in 위키원 + @) 

 

위에서 이야기한 크기가 일정한 메모리 공간은 메모리의 Stack영역을 말한다.

 

※여기서 부터는 필자의 개인적인 의견이 들어가있어 다소 틀린 내용이 포함될수 있습니다. ※

일반변수는 일반적으로 CPU아키텍처에서 정의한 기본자료형의에 대해서만 처리를 한다 라고 볼수있다. 대표적으로 Int, Double, Boolean, Float 등이 있다. 이러한 자료형들은 기본적으로 CPU를 만들때 크기를 정해놨기때문에 개발자가 개발할때 해당 자료형을 사용하겠다고 선언을 하게되면, 정해진 크기대로 사용이 되기때문에 Heap메모리에 비해 크기가 작고 처리 속도가 빠른 Stack메모리에 안정적으로 할당하여 사용할수 있게 된것이다.

 

그럼 만약에 개발자가 일반자료형들을 조합하여 그때 그때 마다 크기가 다른면서 원하는 크기를 만들어 할당할수 없을까? 라는 의문이 들수있다. 이때 사용하는 것이 참조변수이다.

2. 참조변수?


실제 값을 가진 변수가 아니라, 값이 들어가 있는 주소를 가지고 있는 변수를 말한다. (Made in 위키원)

 

참조변수는 아래 그림처럼 일반적으로 참조하려고 하는 값의 시작 주소값을 가지고 있다.

 

<참조변수에 대한 이해를 돕기위한 그림>

 

※여기서 부터는 필자의 개인적인 의견이 들어가있어 다소 틀린 내용이 포함될수 있습니다. ※

참조변수는 일반변수들을 조합하여 개발자가 원하는 크기의 자료형을 만들어 처리를 하는것이다. 그러다보니 참조변수의 크기는 천차만별로 커질수있다. 그러다보니 크기가 작은 Stack영역에 참조변수를 할당하기에는 부담스럽다보니 자연스럽게 크기가 큰 Heap영역에 할당하게 되고, Stack영역에서 Heap영역의 메모리의 값을 가져와야 하다보니, 자연스럽게 Stack영역서는 Heap영역에 할당된 공간의 주소를 가르키게 된것이다.

 

3. 정리


※여기서 부터는 필자의 개인적인 의견이 들어가있어 다소 틀린 내용이 포함될수 있습니다. ※

마지막 정리로는 일반변수는 우리가 기본적으로 사용하는 Int, Double, Float과 같은 자료형을 사용하여 Stack영역에 저장되는것을 일반변수라하고, 참조변수는 일반변수들의 조합으로 이루어진 Array, Class와 같은 자료형들을 사용하여 Heap영역에 저장하되 해당 부분을 찾기위해 Stack영역에는 Heap영역에 주소값을 가르키는 변수를 참조변수라고 한다.