/**************************************************************/
// R. A. Hillyard
// pointer02.cpp
// November 2001
//
// Program to demonstrate the use of the new operator
/**************************************************************/
#include<iostream>
#include<iomanip>

using namespace std;

int main()
  {
  int *intPtr1, *intPtr2;   //declare pointer variables

  intPtr1 = new int;        //allocate memory for int and point to it
  intPtr2 = new int;
  //print out value of uninitialized memory locations  
  cout << "intPtrs value  :  " << *intPtr1 << " " << *intPtr2 <<  endl;
  cout << "intPtrs address:  " <<  intPtr1 << " " <<  intPtr2 <<  endl;
  //set the value using the defererencing operator
  *intPtr1 = 33;
  *intPtr2 = 22;
    
  cout << "intPtr1:  " << intPtr1 << " " << *intPtr1  <<  endl;
  cout << "intPtr2:  " << intPtr2 << " " << *intPtr2  <<  endl;

  *intPtr1 =  *intPtr2 * 2;
    
  cout << "intPtr1:  " << intPtr1 << " " << *intPtr1  <<  endl;
  cout << "intPtr2:  " << intPtr2 << " " << *intPtr2  <<  endl;
  
  intPtr1 = intPtr2;
  cout << "intPtr1:  " << intPtr1 << " " << *intPtr1  <<  endl;
  cout << "intPtr2:  " << intPtr2 << " " << *intPtr2  <<  endl;
  }
/***********************Program Output*************************/
intPtrs value  :  1258860 1258876
intPtrs address:  0x00133560 0x00133570
intPtr1:  0x00133560 33
intPtr2:  0x00133570 22
intPtr1:  0x00133560 44
intPtr2:  0x00133570 22
intPtr1:  0x00133570 22
intPtr2:  0x00133570 22