mercredi 11 septembre 2019

Difference between pointer to pointer and reference to pointer [duplicate]

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; 
} 

Aucun commentaire:

Enregistrer un commentaire