#include #include #include int main(void) { // Part 1 std::cout << "! ------------- [Part 1] -------------" << std::endl; std::cout << "! Setting integer 1 and 2 to 4 and 5 respectively, directly" << std::endl; int iNum = 4; int iNum2 = 5; std::cout << "! Creating pointer 1 and 2 with null pointer values" << std::endl; int *pINum1 = nullptr; int *pINum2 = nullptr; std::cout << "! Setting pointer 1 and 2 to the memory addresses of integer 1 " "and 2 respectively" << std::endl; pINum1 = &iNum; pINum2 = &iNum2; std::cout << "Pointer 1 address: " << pINum1 << std::endl; std::cout << "Integer 1 address: " << &iNum << std::endl << std::endl; std::cout << "Pointer 2 address: " << pINum2 << std::endl; std::cout << "Integer 2 address: " << &iNum2 << std::endl << std::endl; std::cout << "Integer 1 value (dereferenced from pointer 1): " << *pINum1 << std::endl; std::cout << "Integer 2 value (dereferenced from pointer 2): " << *pINum2 << std::endl; // Part 2 std::cout << std::endl << "! ------------- [Part 2] -------------" << std::endl; std::cout << "! Setting integer 1 value directly to 6" << std::endl; iNum = 6; std::cout << "Integer 1 value (directly): " << iNum << std::endl; std::cout << "Integer 1 value (dereferenced from pointer 1): " << *pINum1 << std::endl; // Part 3 std::cout << std::endl << "------------- [Part 3] -------------" << std::endl; std::cout << "! Setting value referenced by pointer 1 to a 7" << std::endl; *pINum1 = 7; std::cout << "Integer 1 value (directly): " << iNum << std::endl; // Part 4 std::cout << std::endl << "------------- [Part 4] -------------" << std::endl; std::cout << "! Setting pointer 2 address to the same as pointer 1" << std::endl; pINum2 = pINum1; std::cout << "Pointer 2 address: " << pINum2 << std::endl; std::cout << "Value of pointer 2 dereference: " << *pINum2 << std::endl; std::cout << "! Setting underlying value of pointer 2 to 8" << std::endl; *pINum2 = 8; std::cout << std::endl << "Integer 1 value (dereferenced from pointer 1): " << *pINum1 << std::endl; std::cout << "Integer 1 value (dereferenced from pointer 2): " << *pINum2 << std::endl; std::cout << "Integer 1 value (directly): " << iNum << std::endl << std::endl; std::cout << "Integer 2 value (directly): " << iNum2 << std::endl; // Part 5 std::cout << std::endl << "------------- [Part 5] -------------" << std::endl; std::cout << "! Creating a double pointer with a null pointer value" << std::endl; double *pDNum = nullptr; // pDNum = &iNum; error: cannot convert ‘int*’ to ‘double*’ in assignment // pDNum = pINum1; error: cannot convert ‘int*’ to ‘double*’ in assignment std::cout << "! Creating a double with value 14.25" << std::endl; double dNum = 14.25; std::cout << "! Setting double pointer to the memory address of the double" << std::endl; pDNum = &dNum; std::cout << "Address of double (from double pointer): " << pDNum << std::endl; std::cout << "Value of double (from double pointer): " << *pDNum << std::endl; std::cout << "! Assigning the value pointed at by pointer 1 to the value " "pointed at by the double pointer" << std::endl; *pDNum = *pINum1; std::cout << "Value of double (directly): " << dNum << std::endl; std::cout << "Value of double (from double pointer): " << *pDNum << std::endl; }