lvalue, rvalue
lvalue는 메모리 주소를 가지고 있는 값이며 예시로 변수나 배열 요소 등이 있습니다. 메모리 주소를 가지고 있기에 참조할 수 있고 어떤 객체나 변수에 대입의 왼쪽으로 올 수 있는 값을 의미합니다. 스택, 힙, 정적 메모리 등 객체가 존재하는 메모리 영역에 저장됩니다.
rvalue는 일시적인 값이나 메모리 주소를 가지고 있지 않은 값들을 의미하며 식이 끝나면 소멸되는 값들을 의미합니다. 메모리 주소가 없기에 대입문의 오른쪽에만 올 수 있는 값들을 의미합니다, 일반적으로 메모리 주소를 직접적으로 가질 수는 없습니다.
모든 lvalue는 rvalue가 될 수 있지만 모든 rvalue는 lvalue가 될 수 없다고 하며, 그 이유로는 당연히 rvalue는 메모리 주소를 가지지 않는 경우도 많기 때문입니다.
int x = 10; // x는 lvalue
int y = x+3; // x+3은 rvalue, 임시 객체를 생성하기에
'C++ Programming > C Basic' 카테고리의 다른 글
| Smart Pointer(스마트 포인터) (1) | 2025.07.31 |
|---|---|
| fmodf, remainderf (0) | 2025.07.20 |
| RTTI (Run-Time Type Information) (0) | 2025.05.27 |
| #pragma (0) | 2025.05.21 |
| 포인터 (0) | 2025.02.13 |
