#include using namespace std; void functionOne(double* theParameter) { double value = *theParameter; theParameter = new double; *theParameter = 10; // this function additionally creates a memroy leak // because we'll lose handle to new double when function // terminates } void functionTwo(double* & theParameter) { double value = *theParameter; theParameter = new double; *theParameter = 10; } int main(int argc, char* argv[]) { double aDouble = 5.0; double* aDoublePointer = &aDouble; cout << "Value of aDouble: " << aDouble << endl; cout << "Memory address of aDouble: " << &aDouble << endl; cout << "Value of aDoublePointer: " << aDoublePointer << endl; cout << "Value held in address pointed to by aDoublePointer: " << *aDoublePointer << endl << endl; functionOne(aDoublePointer); cout << "After calling functionOne: " << endl; cout << "Value of aDouble: " << aDouble << endl; cout << "Memory address of aDouble: " << &aDouble << endl; cout << "Value of aDoublePointer: " << aDoublePointer << endl; cout << "Value held in address pointed to by aDoublePointer: " << *aDoublePointer << endl << endl; functionTwo(aDoublePointer); cout << "After calling functionTwo: " << endl; cout << "Value of aDouble: " << aDouble << endl; cout << "Memory address of aDouble: " << &aDouble << endl; cout << "Value of aDoublePointer: " << aDoublePointer << endl; cout << "Value held in address pointed to by aDoublePointer: " << *aDoublePointer << endl; return 0; }