인프런 커뮤니티 질문&답변

강진성님의 프로필 이미지
강진성

작성한 질문수

홍정모의 따라하며 배우는 C언어

12.2 객체와 식별자, lvalue와 rvalue

12분 30초 쯤이 잘 이해가 안갑니다

작성

·

62

1

"Lvalue가 refer된다는 것은 또 다른 이름처럼 사용된다라는 것이다"라는 것이 무슨 말인가요? 이미 선언된 변수에 어떤걸 대입하는건데 그냥 idenifier로써 작동하는 것이 아닌가요? 아 너무 헷갈리네요ㅠㅠ

답변 1

1

안녕하세요? 질문&답변 도우미 Soobak 입니다.

 

저도 처음 공부할 때 이해에 힘들어했던 부분이네요!
충분히 헷갈리실 수 있는 내용이고, 점점 용어들에 익숙해지시면서 자연스럽게 이해가 되실거에요!

 

우선, Lvalue 는 메모리의 위치를 나타내는 표현식입니다. (해당 강의의 11:30 부분 경 참고)

여기서, 중요한 점은 Lvalue 가 단순히 값을 저장하는 것이 아니라, 메모리의 위치를 나타낸다는 점, refer 하고 있다는 점입니다.

 

"또 다른 이름처럼 사용된다" 는 것을 이 부분에 초점을 맞추어 접근해보시면 이해에 도움이 되실 것 같습니다.

(해당 강의 13:20 부분의 예제와 교수님 설명을 참고해보시면 더 좋을 것 같습니다.)

또한, int a = 10; int b = a; 와 같은 코드에서,
b = a 는, a 가 가리키는 메모리 위치(refer)의 값을 b 가 가리키는 메모리 위치(refer)에 복사하는 것입니다.

이 때, ab 는 각각 독립적인 메모리 위치를 가리키는 Lvalue 입니다.

따라서, 식별자(Identifier) 로써 작동한다고 이해하시기 보다는, "메모리 위치를 참조한다" 로 이해하시는 것이 더 정확합니다.

 

핵심은, Lvalue 는 단순히 변수의 이름이 아니라, 메모리 위치를 나타내는 표현식 이라는 점입니다.


예를 들어,
int a = 5; int* ptr = &a; 의 경우에서, a*ptr 은 같은 메모리 위치를 가리키는 서로 다른 방법(각각 또 다른 이름)이며, 둘 다 Lvalue 로 같은 메모리 위치를 refer 하고 있습니다.

강진성님의 프로필 이미지
강진성

작성한 질문수

질문하기