#include using namespace std; void kswap(int *, int *); void main(){ int x; x = 3; cout << x << " " << &x << endl; int *p; p = &x; *p = 7; cout << x << endl; cout << " p " << p << " *p " << *p << endl; int* q, z; q = &z; *q = 13; cout << " z " << z << endl; *p = *q; cout << " x " << x << endl; x = 4; z = 123; p = q; cout << " p " << p << " q " << q << endl; cout << " x " << x << " z " << z << endl; *p = 42; cout << " x " << x << " z " << z << endl; p = new int(456); cout << " p " << p << " *p " << *p << endl; *p = 17; cout << *p << endl; delete p; // may work but gives invalid data cout << *p << endl; // avoids accidental usage of deleted pointer p = 0; // now crashes the program - a good thing! //cout << *p << endl; p = q;// p is still valid as a pointer. cout << *p << endl; x = 3; z = 78; kswap(&x, &z); cout << x << " " << z << endl; } void kswap(int *a, int *b){ int t = *a; *a = *b; *b = t; }