// threepointers.cpp

#include <iostream>
using namespace std;

int main()
{
  float a = 2, b = 3, c = 4;     
  float *pt1 = &a; //ορίζω την μεταβλητή pt1 ως δείκτη σε float, 
                  // και τον αρχικοποιώ να δείχνει στην διεύθυνση του a

  float *pt2 = NULL, *pt3 = NULL; // ορίζω τις μεταβλητές pt2,pt3 ως δείκτες σε float, 
				  // και τις αρχικοποιώ στην τιμή NULL (μηδέν).   

  // Αρχικοποιώ τους δείκτες pt2 και pt3 ώστε να δείχνουν 
  // στις διευθύνσεις των b και c αντίστοιχα:
  pt2 = &b;
  pt3 = &c;

  cout << "a= " << a << ", " << "&a= " << &a << ", " << "*ptr1= " << *pt1 << "\n";
  cout << "b= " << b << ", " << "&b= " << &b << ", " << "*ptr2= " << *pt2 << "\n";
  cout << "c= " << c << ", " << "&c= " << &c << ", " << "*ptr3= " << *pt3 << "\n\n";
  
  cout << "Θα αλλάξω το c με τον ptr3\n";
  *pt3 = 314;
  cout << "c = " << c << ", " << "&c = " << &c << ", " << "*ptr3 = " << *pt3 << "\n\n";
  
   // Η θεμελιώδης διαφορά της έκφρασης ptr2 = ptr3 με την *ptr2 = *ptr3: 

   // a) Αλλάζω την κατεύθυνση του δείκτη ptr2:
   cout << "Κάνω τον δείκτη pt2 να δείχνει στην τιμή που δείχνει ο pt3: pt2  = pt3\n";
   pt2  = pt3;
   cout << *pt2 << " " << *pt3 << "\n";
   cout << "a= " << a << " b= " << b << " c= " << c << "\n\n";

   cout << "Κάνω τον δείκτη pt2 να δείχνει πάλι στο b:  pt2 = &b; \n";
   pt2 = &b;
   cout << "*pt2= " << *pt2 << "\n\n";

   // b) Αλλάζω την τιμή του αντικειμένου στο οποίο δείχνει ο ptr2:
   cout << "Αλλάζω την τιμή του b και της δίνω την τιμή του c: *pt2 = *pt3; \n";
   cout << "Πριν: " << "*pt2= " << *pt2 << " " << " *pt3= " << *pt3 << "\n";
   *pt2 = *pt3;
   cout << "Mετά: " << "*pt2= " << *pt2 << " " << "*pt3= " <<*pt3 << "\n";
   cout << "a= " << a << " b= " << b << " c= " << c << "\n";
  
  return 0;
}

Εδώ να τρέχει: http://cpp.sh/4e27.