#include<iostream.h>
#include<conio.h>
void init();
void poarr01();
void poarr02();
void poarr03();
void ref();
void main()
{
textbackground(BLUE);
textcolor(GREEN);
clrscr();
init();
poarr01();
poarr02();
poarr03();
ref();
getch();
}
void init()
{
int arr[5]={1,2,3,4,5};

int *parr=arr;//By default storing 1st index of array.

/*The above statment is equivalent to */
//int *parr=&arr[0];
/*It means that array itself is a pointer for first index of array.*/

cout<<"\n\t\t\t*parr : "<<*parr;
}
void poarr01()
{
int arr[5];
int *parr=arr;
cout<<"\n\n\n\n";
for(int i=0;i<5;i++)
  {
  cout<<"\t\t\tarr "<<i<<" : ";
  cin>>*(parr+i);//It means that *(parr+i)=arr[i]
  }
for(int j=4;j>=0;j--)
cout<<"\n\t\t\tarr "<<j<<" : "<<*(parr+j);
}
void poarr02()
{
int arr[5]={10,15,0,1,2};
int *parr=arr;
cout<<"\n\n\n\n\t\t\t*parr : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
}
void poarr03()
{
int arr[5]={10,15,0,1,2};
int *parr=arr;
cout<<"\n\n\n\n\t\t\t*parr : "<<*parr;
(*parr)++;
cout<<"\n\t\t\t*parr(after increment) : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
(*parr)++;
cout<<"\n\t\t\t*parr(after increment) : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
(*parr)++;
cout<<"\n\t\t\t*parr(after increment) : "<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
(*parr)++;
cout<<"\n\t\t\t*parr(after increment) :"<<*parr;
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;
(*parr)++;
cout<<"\n\t\t\t*parr(after increment) : "<<*parr;
}
void ref()
{
int x=5;
int *parr=&x;
cout<<"\n\n\n\n\t\t\t*parr : "<<*parr;
(*parr)++;
cout<<"\n\t\t\t*parr(after increment) : "<<*parr;
//But when
*parr++;
cout<<"\n\t\t\t*parr : "<<*parr;//Garbage value.
}
