개발

값 Value 와 참조 Referance 타입

explosion149 2024. 10. 27.
값 타입과 참조 타입은 데이터가 메모리에 저장되고
처리되는 방식을 구분하는 중요한 개념입니다.
이해하기 쉽게, 값을 직접 가지고 있느냐 아니면
값을 가리키는 주소를 가지고 있느냐의 차이라고 볼 수 있습니다.

 

 

 

값 타입 (Value Type)

정의

값 타입 변수는 데이터 자체를 직접 저장합니다.

 

특징

값을 복사할 때는 원래 변수와 완전히 독립된 복사본이 생기며,

둘 중 하나의 값이 변해도 다른 쪽에는 영향이 없습니다.

 

예시

주로 정수(int), 실수(float), 구조체(struct) 등이 이에 해당됩니다.

 

예를 들어, a라는 값 타입 변수를 b에 할당하면 a와 같은 값이 b에 복사됩니다.

이제 a와 b는 별개의 값이기 때문에, a를 변경해도 b에는 영향을 주지 않습니다.

 

int a = 10;
int b = a; // b는 a의 복사본을 가지게 됨
a = 20;    // a의 값만 바뀌고, b는 여전히 10

 

 

참조 타입 (Reference Type)

정의

참조 타입 변수는 데이터가 저장된 위치(메모리 주소)를 저장합니다.

즉, 데이터를 가리키고 있는 것입니다.

 

특징

복사 시 메모리 주소를 복사하기 때문에, 여러 변수가 같은 데이터를 공유하게 됩니다.

따라서 한 곳에서 데이터를 변경하면, 그 데이터를 참조하는 다른 변수에도 변화가 반영됩니다.

 

예시

주로 클래스(class), 배열(array), 포인터(pointer) 등이 이에 해당됩니다.

 

예를 들어, Person이라는 클래스를 a와 b로 참조하면, a와 b는 같은 객체를 가리킵니다. 따라서 a의 데이터를 변경하면 b에서도 그 변경사항이 반영됩니다.

 

Person a;          // a가 Person 객체를 가리킴
Person b = a;      // b도 a와 같은 객체를 가리킴
a.name = "Alice";  // a와 b 모두 같은 객체의 name이 변경됨

 

 

이해하기 위한 키워드

메모리 주소 (Memory Address)

값이 저장된 위치를 나타내며, 참조 타입은 이 주소를 저장합니다.

 

복사 (Copy)

값을 그대로 복사하는 것과 주소만 복사하는 차이를 이해하는 것이 핵심입니다.

 

힙(Heap)과 스택(Stack)

값 타입과 참조 타입이 주로 메모리에 할당되는 위치입니다.

스택에는 값 타입, 힙에는 참조 타입 데이터가 저장되는 경우가 많습니다.

 

객체 (Object)

클래스를 통해 생성되는 데이터 단위로, 주로 참조 타입으로 다루어집니다.

'개발' 카테고리의 다른 글

클럭 [Clock]  (0) 2024.10.29
데이터 와 데이터베이스  (0) 2024.10.28
제어 유닛 [Control Unit]  (0) 2024.10.27
[ALU] Arithmetic Logic Unit, 산술 논리 연산 장치  (0) 2024.10.26
[레지스터] Register  (1) 2024.10.26

댓글

💲 추천 글