// 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.