/* ************************************************************************** * Program name : 054_Const_qualifier_with_pointer (Version 1.00) * * Author : Duck Wong * * Language : C / C++ * * Compiler : Boodshed Dec-C++ compiler Ver 3.95 * * Computer : PII350 * * O/S : Windows 98 * ************************************************************************** * Version 1.00 : 2000/07/01 - first version * ************************************************************************** * Description : (a) Input 4 integer number , output pointers' values * * (b) Re-input 4 integer number , output pointers' values * * (c) Change the values of variable C & D and * * output pointers values * * (d) Change the values of pointers 2 & 4 and * * output pointers values * * (e) Try again ? * ************************************************************************** */ #include #include int main() { // part 1 : declaration char Again; int A, B, C, D; do { // part 2a : Input four numbers cout << "\n\tPlease input an integer number (A): "; cin >> A; cout << "\n\tPlease input an integer number (B): "; cin >> B; cout << "\n\tPlease input an integer number (C): "; cin >> C; cout << "\n\tPlease input an integer number (D): "; cin >> D; // part 2b : Assign these numbers to pointers const int * const pointer_1 = &A; // Note (1) const int * pointer_2 = &B; int * const pointer_3 = &C; int * pointer_4 = &D; // part 2c : Output current status cout << "\n\n\tCurrent status : "; cout << "\n\tpointer_1 (A)" << "\t" << *pointer_1 << "\t" << pointer_1; cout << "\n\tpointer_2 (B)" << "\t" << *pointer_2 << "\t" << pointer_2; cout << "\n\tpointer_3 (C)" << "\t" << *pointer_3 << "\t" << pointer_3; cout << "\n\tpointer_4 (D)" << "\t" << *pointer_4 << "\t" << pointer_4; cout << "\n\t"; system("PAUSE"); // part 3a : Re-input four numbers cout << "\n\tPlease input an integer number (A): "; cin >> A; cout << "\n\tPlease input an integer number (B): "; cin >> B; cout << "\n\tPlease input an integer number (C): "; cin >> C; cout << "\n\tPlease input an integer number (D): "; cin >> D; // part 3b : Output current status cout << "\n\n\tAfter re-input the values of A,B,C and D : "; cout << "\n\tpointer_1 (A)" << "\t" << *pointer_1 << "\t" << pointer_1; cout << "\n\tpointer_2 (B)" << "\t" << *pointer_2 << "\t" << pointer_2; cout << "\n\tpointer_3 (C)" << "\t" << *pointer_3 << "\t" << pointer_3; cout << "\n\tpointer_4 (D)" << "\t" << *pointer_4 << "\t" << pointer_4; cout << "\n\t"; system("PAUSE"); // part 4a : Change the values of variable C & D w/ pointer // *pointer_1 = 1; // error : assignment of read-only location // *pointer_2 = 2; // error : assignment of read-only location *pointer_3 = 3; *pointer_4 = 4; // part 4b : Output current status cout << "\n\n\tAfter changing the values of variable C & D w/ pointer : "; cout << "\n\tpointer_1 (A)" << "\t" << *pointer_1 << "\t" << pointer_1; cout << "\n\tpointer_2 (B)" << "\t" << *pointer_2 << "\t" << pointer_2; cout << "\n\tpointer_3 (C)" << "\t" << *pointer_3 << "\t" << pointer_3; cout << "\n\tpointer_4 (D)" << "\t" << *pointer_4 << "\t" << pointer_4; cout << "\n\t"; system("PAUSE"); // part 5a : Change the values of pointer_2 & pointer_4 // pointer_1 = &C; // error : assignment of read-only variable // pointer_3 = &A; // error : assignment of read-only variable pointer_2 = &A; pointer_4 = &C; // part 5b : Output current status cout << "\n\n\tAfter changing the values of pointers 2 and 4 : "; cout << "\n\tpointer_1 (A)" << "\t" << *pointer_1 << "\t" << pointer_1; cout << "\n\tpointer_2 (A)" << "\t" << *pointer_2 << "\t" << pointer_2; cout << "\n\tpointer_3 (C)" << "\t" << *pointer_3 << "\t" << pointer_3; cout << "\n\tpointer_4 (C)" << "\t" << *pointer_4 << "\t" << pointer_4; cout << "\n\t"; // part 6 : try another number ? cout << "\n\n\tTry another number (Y/N) : "; cin >> Again; cout << "\n"; } while (Again=='Y' || Again=='y'); cout << "\n" << endl; system("PAUSE"); return 0; } /* Notes The use of CONST qualifier : syntex / format | *pointername | pointername --------------------------------------|--------------|---------------- const int * const pointername = ....; | unmodifiable | unmodifiable const int * pointername; | unmodifiable | --- int * const pointername = ....; | --- | unmodifiable int * pointername; | --- | --- --------------------------------------|--------------|---------------- */