what is lvalue & rvalue
gpt과 개념싸움을 하다가 배웠다.
lvalue와 rvalue는 각각 left와 right value 라는 뜻인데
우리가 일반적으로 쓰는
C
int a = 10;이런 코드에서 = 를 기준으로 왼쪽과 오른쪽에 있을때 사용이 다르다는 의미이다.
예를 들어 위식에서 lvalue 는 a rvalue 는 10 이 된다. rvalue 는 사용하고 없어지는 1회용 식이다. 그리고
lvalue 는 쓰여지는 부분이다. 따라서
C
int a[2] = { 1 , 2 };
int b = *(a + 1);이라면 *(a + 1) 이 부분이 진짜 값을 참조 해서 가져온다.
하지만,
C
int a[2] = { 1 , 2 };
*(a + 1) = 10;이런식으로 하게 되면 *(a + 1) 이건 값을 가져오는게 아니라 해당 부분을 가리키고 있는 상태가 된다.