Files
gpd-324/CPlusPlus/Pointer/main.cpp
T
david 4b6ac6a484 add pointer
add "dynamic" heap array
add polymorphic
2025-03-26 12:44:05 +01:00

59 lines
1.1 KiB
C++

#include <iostream>
using namespace std;
void changeInteger(int n);
void changeIntegerPerPointer(int* pN);
int changeIntegerPerReturn(int n);
void changeIntegerPerReference(int& n);
int main()
{
// general
int* pNumber = nullptr;
pNumber = new int(0);
cout << "size of pNumber: " << sizeof(pNumber) << endl;
cout << "size of pNumber data: " << sizeof(*pNumber) << endl;
*pNumber = 567;
//pNumber = new int(0); // BAD BAD - Memory Leak, because we override an existing pointer address with a new one without saving the old one
// here are 100s of lines of code
if (pNumber != nullptr)
{
delete pNumber;
pNumber = nullptr;
}
// pointer as references
int number = 0;
changeInteger(number);
changeIntegerPerPointer(&number);
changeIntegerPerPointer(pNumber);
changeIntegerPerReference(number);
return 0;
}
void changeInteger(int n)
{
n = 100;
}
void changeIntegerPerPointer(int* pN)
{
cout << "address of pN: " << &pN << endl;
if (pN == nullptr) return; // BE CAREFUL - if you don't what you get, do a test before
*pN = 200;
}
void changeIntegerPerReference(int& n)
{
n = 300;
}