Source of ptr_ex2.cpp


  1: // Filename: PTR_EX2.CPP
  2: // Purpose:  Illustrates pointers to double, char, bool, enum
  3: //           and struct types.

  5: #include <iostream>
  6: using namespace std;

  8: int main()
  9: {
 10:     cout << "\nThis program illustrates pointers to various types."
 11:          << "\nStudy the source code and the output simultaneously.\n\n";

 13:     double* dPtr;  // Pointer to double
 14:     char*  cPtr;   // Pointer to char
 15:     bool*  bPtr;   // Pointer to bool

 17:     enum DayType { SUN, MON, TUE, WED, THU, FRI, SAT };
 18:     DayType* dayPtr;  // Pointer to enum

 20:     struct BankAccount
 21:     {
 22:         int idNum;
 23:         char kind;
 24:         double balance;
 25:     };
 26:     BankAccount* baPtr;  // Pointer to struct

 28:     double cost = 19.95; // These are just ordinary variables,
 29:     char grade = 'B';    // each one of a different type, and
 30:     bool valid = true;   // each one initialized at the time
 31:     DayType day = WED;   // of declaration.
 32:     BankAccount myStash = {123, 'C', 199.99};

 34:     dPtr = &cost;        // Here we make the pointers point
 35:     cPtr = &grade;       // at the "ordinary" variables.
 36:     bPtr = &valid;
 37:     dayPtr = &day;
 38:     baPtr = &myStash;

 40:     // Now display the values:
 41:     cout << *dPtr << endl;
 42:     cout << *cPtr << endl;
 43:     cout << ((*bPtr == true) ? "true" : "false") << endl << endl;
 44:     if (*dayPtr == WED)
 45:     {
 46:               // Because this notation    ... C++ supplies this
 47:               // is so cumbersome ...     alternate notation
 48:               // vvvvvvvvvvv                vvvvvvvvvvvv
 49:         cout << (*baPtr).idNum   << "  " << baPtr->idNum   << endl;
 50:         cout << (*baPtr).kind    << "  " << baPtr->kind    << endl;
 51:         cout << (*baPtr).balance << "  " << baPtr->balance << endl;
 52:     }
 53:     cout << endl;

 55:     return 0;
 56: }