I’m looking few exercise from university about C++ and I found out this exercise:
#include <iostream>
using namespace std;
int& f(int*&);
int& f(int*& x) {
*x = 5;
return *x;
}
int main() {
int y = 1, x;
int* z = &y;
x= f(z);
cout << y << " " << x <<endl;
}
I was wondering: does <any type>*& has any real sense? Isn’t f(int*& x) the same as f(int x)? Aren’t you passing the pointer to the L-value of the variable?
With
int* &xyou are passing the same pointer(by reference). Otherwise with onlyint* xyou are passing a copy of the pointer and then you can’t change the original one in the function.&xmakesxan alias of the original parameter.