These two function do exactly the same thing.
But in one the function argument is pointer to pointer and in the second it is reference to pointer.
1) Is there any difference between the two
2) when to choose which one.
#include <iostream>
using namespace std;
int global_var = 42;
// function to change pointer to pointer value
void changePointerValue(int** ptr_ptr)
{
*ptr_ptr = &global_var;
}
int main()
{
int var = 23;
int* pointer_to_var = &var;
cout << "Passing a pointer to a pointer to function " << endl;
cout << "Before :" << *pointer_to_var << endl; // display 23
changePointerValue(&pointer_to_var);
cout << "After :" << *pointer_to_var << endl; // display 42
return 0;
}
/////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int gobal_var = 42;
// function to change Reference to pointer value
void changeReferenceValue(int*& pp)
{
pp = &gobal_var;
}
int main()
{
int var = 23;
int* ptr_to_var = &var;
cout << "Passing a Reference to a pointer to function" << endl;
cout << "Before :" << *ptr_to_var << endl; // display 23
changeReferenceValue(ptr_to_var);
cout << "After :" << *ptr_to_var << endl; // display 42
return 0;
}