Working with const References or r-value References
A temporary object cannot be passed as an argument for a reference parameter. To accept temporary parameters, we need to use const references or r-value references. The r-value references are references that are identified by two ampersands, &&, and can only refer to temporary values. We will look at them in more detail in Lesson 4, Generic Programming and Templates.
We need to remember that a pointer is a value that represents the location of an object.
Being a value, it means that when we are accepting a parameter as a pointer, the pointer itself is passed as a value.
This means that the modification of the pointer inside the function is not going to be visible to the caller.
But if we are modifying the object the pointer points to, then the original object is going to be modified:
void modify_pointer(int* pointer) { *pointer = 1; pointer = 0; } int main() { int a = 0; int* ptr = &a; modify_pointer(ptr); std::cout ...