Source of ptr_ex6.cpp


  1: // Filename: PTR_EX6.CPP
  2: // Purpose:  Illustrates dynamic storage with both simple and array
  3: //           variables, as well as "new" and "delete", and the NULL pointer.

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

  9: #include "PAUSE.H"

 11: int main()
 12: {
 13:     cout << "\nThis program illustrates dynamic storage "
 14:          << "with new, delete and NULL."
 15:          << "\nStudy the source code and the output simultaneously.\n\n";

 17:     int* iPtr1;        // Declare pointer to int.
 18:     iPtr1 = new int;   // Make pointer point to a (dynamic) int location.
 19:     *iPtr1 = 34;       // Put a value (34) in that (dynamic) location.

 21:     int* iPtr2 = new int; // Declare int pointer/allocate memory at same time.
 22:     *iPtr2 = 12;          // Put a value (12) in that (dynamic) location.

 24:     // Display the two values.
 25:     cout << *iPtr1 << " " << *iPtr2 << endl;
 26:     Pause(0);

 28:     delete iPtr1;  // Return storage pointed to by iPtr1 to free store.
 29:     iPtr1 = iPtr2; // Make iPtr1 point at storage pointed to by iPtr2.
 30:     iPtr2 = NULL;  // Make iPtr2 point at nothing at all.
 31:     // Note that at this point we have "lost" 34.


 34:     // Create a dynamic int array of size 6 pointed to by a.
 35:     int* a = new int[6];

 37:     int i;
 38:     for (i = 0; i < 6; i++)  // Put some values in the array.
 39:         a[i] = i*i*i;
 40:     for (i = 0; i < 6; i++)  // Display the values in the array.
 41:         cout << a[i] << " ";
 42:     cout << endl;
 43:     Pause(0);

 45:     a[5] = *iPtr1;           // Change one of the values in the array.
 46:     for (i = 0; i < 6; i++)  // Display the array values again.
 47:         cout << a[i] << " ";
 48:     cout << endl;
 49:     Pause(0);

 51:     delete [] a;  // Return the array storage to the free store.

 53:     return 0;
 54: }