110 lines
No EOL
3.6 KiB
C++
110 lines
No EOL
3.6 KiB
C++
#include <iostream>
|
||
#include <ostream>
|
||
#include <chrono>
|
||
|
||
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;
|
||
} |