1. L-value, R-value란? 다시 한 번 부를 수 있으면 Lvalue 한 번만 쓰이고 다시 불릴 수 없으면 Rvalue std::string S = "abc"; 같은 경우에도 S값은 나중에 다시 부를 수 있기 때문에 Lvalue, "abc"는 이 명령어에서만 쓰이고 다시는 쓰이지 않기 때문에 Rvalue. 더 자세한 설명은 다른 분들이 잘 정리해 주셨으니 참고할 것. https://effort4137.tistory.com/entry/Lvalue-Rvalue Lvalue Rvalue C++ Lvalue와 Rvalue에 대한 오해 Lvalue와 Rvalue는 보통 Left-value(왼쪽값)과 Right-value(오른쪽값)로 풀어서 씁니다. 이 때문에 대입 연산자(=)를 기준으로 왼쪽에 위치하는..
레퍼런스
1. Pass by Value a 가 Pass by Value 되며 카피되면서 foo 에 a=0 이 들어가게 되고, 로컬변수 b는 a+1이니까 1이 들어가게 된다. 결국 값이 복사가 되는 것. 2. Pass by Pointer 함수에서 매개변수로 포인터를 받게 되면, 이 포인터는 함수 바깥에 있는 변수에 접근 가능하다! 만약 예를 들어서, fooP() 에 *ap = 100 을 써주게 되면 어떻게 될까? fooP가 동작할 때 a 공간에 접근을 해서 값을 100으로 바꿔주는 코드가 된다. (접근 가능!) 3. Call by Reference 레퍼런스를 받는 fooR() 함수를 만들어주고 콜 해 주는 코드를 짜 보자. 사실 포인터로 넘겨주는 함수와 레퍼런스로 넘겨주는 함수 두 개는 똑같다. Compiler E..
주소(address) : C++에서의 주소란, 메모리 위치를 직접 가리킬 때 사용되는 메모리에서의 '주소'를 의미한다. 컴퓨터 안에서 사용되는 주소이기 때문에 16진수를 사용하여 0x1000, 0x1004... 이런 식으로 표현하는 경우가 많다. 인간과 컴퓨터를 비교해 보면, cpu를 두뇌로 메모리를 노트로 생각해 볼 수 있는데, cpu(머리속)에 있는 변수와 객체 등등의 개념을 사용하려면 메모리(노트)에 올려놓고 써야만 한다. 이때 노트에 쓴 것들의 위치가 존재하듯이 메모리를 할당해야만 한다. 그래서 그 메모리마다 고유의 주소를 갖게 되는 것이다. 1. 주소 변산자 & - 변수의 주소(메모리에서의 위치) 확인하기 변수값이 메모리의 어느 부분에 저장되어 있는지 그 주소를 확인할 때에는 주소 변산자(add..