I tried to clear here my logic for pointer basic
#include<iostream> using namespace std; int main(){ int zaki_live; int *point_koro; int show_koro; zaki_live=50; point_koro=&zaki_live; show_koro=*point_koro; //now printing the output cout<<"Value of zaki_live :"<<zaki_live<<endl; cout<<"Value of point_koro :"<<*point_koro<<endl; cout<<"Value of show_koro_koro :"<<show_koro<<endl; return 0;}
#include<iostream> using namespace std; int main(){ int var1; int *var_show; int var_output; var1=20; var_show=&var1; var_output=*var_show; //now printing the output cout<<"Value of var1 :"<<var1<<endl; cout<<"Value of *var_show :"<<var_show<<endl; cout<<"Value of var_output :"<<var_output<<endl; return 0;}
Actually in c++ pointer can be declare like this
type *var_name;
example:
int *ip;
double *dp;
float *fp;
char *ch;
#include<iostream> using namespace std; int main(){ int variable=20; //actual variable declaration int *ip; //pointer variable ip=&variable; //store the adddress of the variable in pointer varaibel cout<<"value of the variable: "; cout<<variable<<endl; //print the address stored in pointer variable cout<<"address stored in pointer :"; cout<<ip<<endl; cout<<"address of the variable :"; cout<<&variable<<endl; //access the value of the address through the pointer cout<<"Value of ip *varibale: "; cout<<*ip<<endl; return 0; }
C++ NULL Pointers
It actually represent no where
int *zaki=0;
int *dhaka=NULL;
Both the examples meaning the same attitude of the c++
It actually default by the operating systems
Here is one example:
#include<iostream> using namespace std; int main() { int *ptr=NULL; cout<<"The value of ptr is: "<<ptr; return 0; }
We can also define by this
if(ptr) //it will proceed if p is not null
and
if(!ptr) //it will proceed if p is null
Pointer arithmetic
Incrementing a pointer:
#include<iostream> using namespace std; const int MAX=3; int main() { int var[MAX]={10,100,200}; int *ptr; ptr=var; //address of vcar in pointer ptr for(int i=0;i<MAX;i++) { cout<<"Address of var["<<i<<"] = "; cout<<ptr<<endl; cout<<"Value of var["<<i<<"] = "; cout<<*ptr<<endl; ptr++; } return 0; }
Decrementing a pointer:
#include<iostream> using namespace std; const int MAX=3; int main() { int var[MAX]={10,100,200}; int *ptr; ptr=&var[MAX-1]; for(int i=MAX;i>0;i--){ cout<<"Address of var["<<i<<"] = "; cout<<ptr<<endl; cout<<"Value of var["<<i<<"] = "; cout<<*ptr<<endl; //point to the previous location ptr--; } return 0; }
Comparison with pointer:
#include<iostream> using namespace std; const int MAX=3; int main(){ int var[MAX]={10,100,200}; int *ptr; //let us have address of the first element in pointer ptr=var; int i=0; while(ptr<=&var[MAX-1]){ cout<<"Address of var["<<i<<"]: "; cout<<ptr<<endl; cout<<"Value of var["<<i<<"]: "; cout<<*ptr<<endl; //point to previous location ptr++; i++; } return 0; }
C++ pointer vs arrays:
#include<iostream> using namespace std; const int MAX=3; int main(){ int var[MAX]={10,100,200}; for(int i=0;i<MAX;i++) { *var=i; cout<<var<<endl; } return 0; }
C++ Array of pointers
#include<iostream> using namespace std; const int MAX=3; int main(){ int var[MAX]={10,100,200}; int *ptr[MAX]; for(int i=0;i<MAX;i++){ ptr[i]=&var[i]; } for(int i=0;i<MAX;i++) { cout<<"Value of var["<<i<<"] = "; cout<<*ptr[i]<<endl; } return 0; }
and also can store data like this with pointer and array mutually
#include<iostream> using namespace std; const int MAX=4; int main() { char *names[MAX]={"Zara Ali","Mitha Ali","Sara Ali","Zaki Live"}; for(int i=0;i<MAX;i++) { cout<<"Value of names["<<i<<"] = "; cout<<names[i]<<endl; } return 0; }
C++ Pointer to Pointer:
#include<iostream> using namespace std; int main() { int var; int *ptr; int **pptr; var=300; ptr=&var; //take the address of teh var pptr=&ptr;//take the address of ptr using the address operator & //print cout<<"Value of var: "<<var<<endl; cout<<"Value available at *ptr: "<<*ptr<<endl; cout<<"Value available at **pptr:"<<**pptr<<endl; return 0; }