Source of pointers4.cpp


  1: //pointers4.cpp

  3: #include <iostream>
  4: using namespace std;

  6: int main()
  7: {
  8:     cout << "\nThis program illustrates the connection between pointers "
  9:         "and arrays\n(using static arrays) and also some \"pointer "
 10:         "arithmetic\".";
 11:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 13:     int a[] = { 11, 22, 33, 44, 55 };

 15:     cout << "\nFirst we point at the first element of an array "
 16:         "in two different ways.\nThen we use the two different pointers "
 17:         "to display that same first element.\n";
 18:     //THE NAME OF AN ARRAY IS ALSO A POINTER TO ITS FIRST ELEMENT:
 19:     int* p_int1 = a;
 20:     int* p_int2 = &a[0];
 21:     cout << *p_int1 << endl;
 22:     cout << *p_int2 << endl;
 23:     cout << "Press Enter to continue ... ";  cin.ignore(80, '\n');

 25:     //POINTER ARITHMETIC IS "SMART"
 26:     cout << "\nNext we do some pointer arithmetic: We point at the "
 27:         "3rd element of the array,\nand use that pointer (unchanged) "
 28:         "to display the 3rd, 5th and first elements\nof the array.\n";
 29:     int* p_int3 = &a[2]; //p_int3 points at the third element of a
 30:     cout << *p_int3 << endl;
 31:     cout << *(p_int3 + 2) << endl; //Display the fifth element of a
 32:     cout << *(p_int3 - 2) << endl; //Display the first element of a
 33:     cout << "Press Enter to continue ... ";  cin.ignore(80, '\n');

 35:     cout << "\nFinally, we do some more pointer arithmetic: We modify "
 36:         "the pointer pointing\nat the 3rd element of the array to point, "
 37:         "in turn, at the 4th, 5th, 4th and\n3rd elements of the array, "
 38:         "and after each modification use the modified\npointer to "
 39:         "display the value pointed at.\n";
 40:     ++p_int3; //p_int3 now points at the fourth element of a
 41:     cout << *p_int3 << endl;
 42:     p_int3++; //p_int3 now points at the fifth element of a
 43:     cout << *p_int3 << endl;
 44:     --p_int3; //p_int3 now points at the fourth element of a
 45:     cout << *p_int3 << endl;
 46:     p_int3--; //p_int3 now points at the third element of a
 47:     cout << *p_int3 << endl;
 48:     cout << "Press Enter to continue ... ";  cin.ignore(80, '\n');
 49: }