11
Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar Page 1 of 11 Pointer in C++ Pointer is a special variable, used to store the address of another variable of same data type. & :- is known as address operator * :- is known as value operator if it is operative on address, otherwise it behaves like a multiplication operator Arithmetic Operation on Pointer : Only allowed arithmetic operation is addition(+) and Subtraction(-) Program Output #include<iostream> #include<conio.h> using namespace std; int main() { int a; a=5; int *b; b=&a; cout<<"\n Value of b :"<<b<<endl; b=b+1 ; // increase block size cout<<"\n New value of b :"<<b<<endl; getch(); return 0; } Pointer of Pointer Program Output #include<iostream> #include<conio.h> using namespace std; int main() { int a; a=5; int *b; b=&a; int **c; c=&b; int ***d; d=&c; cout<<"\n Address of a\n\n"; cout<<"\n Using &a :"<<&a; cout<<"\n Using b :"<<b; cout<<"\n Using *c :"<<*c; cout<<"\n Using **d :"<<**d; cout<<"\n\n\n Value of a\n"; cout<<"\n Using a :"<<a; #include<iostream> #include<conio.h> a using namespace std; int main() { int a; 10234 a=5; cout<<"\n Value of a :"<<a; // 5 is the value stored at a cout<<"\n Address of a :"<<&a; // 10234 is the address of variable a getch( ); return 0; } 5

Pointers

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 1 of 11

Pointer in C++ Pointer is a special variable, used to store the address of another variable of same data type.

& :- is known as address operator * :- is known as value operator if it is operative on address, otherwise it behaves like a multiplication

operator Arithmetic Operation on Pointer : Only allowed arithmetic operation is addition(+) and Subtraction(-) Program Output #include<iostream> #include<conio.h> using namespace std; int main() { int a; a=5; int *b; b=&a; cout<<"\n Value of b :"<<b<<endl; b=b+1 ; // increase block size cout<<"\n New value of b :"<<b<<endl; getch(); return 0; }

Pointer of Pointer Program Output #include<iostream> #include<conio.h> using namespace std; int main() { int a; a=5; int *b; b=&a; int **c; c=&b; int ***d; d=&c; cout<<"\n Address of a\n\n"; cout<<"\n Using &a :"<<&a; cout<<"\n Using b :"<<b; cout<<"\n Using *c :"<<*c; cout<<"\n Using **d :"<<**d; cout<<"\n\n\n Value of a\n"; cout<<"\n Using a :"<<a;

#include<iostream> #include<conio.h> a using namespace std; int main() { int a; 10234 a=5; cout<<"\n Value of a :"<<a; // 5 is the value stored at a cout<<"\n Address of a :"<<&a ; // 10234 is the address of variable a getch( ); return 0; }

5

Page 2: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 2 of 11

cout<<"\n Using *(&a) :"<<*(&a); cout<<"\n Using *b :"<<*b; cout<<"\n Using **c :"<<**c; cout<<"\n Using ***d :"<<***d; getch(); return 0; }

Pointer as a function parameter Program Output // program to demonstrate call by pointer method #include<iostream> #include<conio.h> using namespace std; void change(int *a) // parameter as pointer { *a = *a+20; } int main() { int x=20; cout<<"\n Value of x before function call:"<<x; change(&x); // passing parameter cout<<"\n Value of x before function call:"<<x; getch(); return 0;

}

Pointer as a function Return type value

Program Output #include<iostream> #include<conio.h> using namespace std; int* read(void) { int a; a=20; return(&a); } int main() { int *res; res = read(); // store retured address cout<<"\n Value of a :"<<*res; cout<<"\n Value of a :"<<*(read()); getch(); return 0; }

Pointer and Array

When an array is defined like

int x[5]; // The memory block is as shown below X

100 102 104 106 108 The address of 0th index block is called BASE ADDRESS and it can be obtained by the following

methods

Page 3: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 3 of 11

(a) x -> 100 (b) &x[0] ->100 (c) x+0 ->100 (d) 0+x ->100 (e) &0[x] ->100

Processing array as a pointer without using any extra pointer variable Program Output // program to access array as a pointer #include<iostream> #include<iomanip> #include<conio.h> #include<math.h> using namespace std; int main() { int x[10],i; // input phase for(i=0;i<10;i++) { cout<<"Enter value :"; cin>>x[i]; } // output cout<<"\n Output using as a pointer:\n"; for(i=0;i<10;i++) cout<<setw(6)<<*(x+i); getch(); return 0; }

Processing array as a pointer using extra pointer variable Program Output #include<iostream> #include<iomanip> #include<conio.h> #include<math.h> using namespace std; int main() { int x[10],i,*p; p= x; // assign base address to p // input phase for(i=0;i<10;i++) x[i]=rand(); // output for(i=0;i<10;i++) { cout<<setw(6)<<*p; p++; } getch(); return 0; }

Page 4: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 4 of 11

Accessing pointer as an array Program Output #include<iostream> #include<iomanip> #include<conio.h> #include<math.h> using namespace std; void change(int *x) { int i; for(i=0;i<10;i++) x[i]=x[i]+20; } int main() { int x[10],i; // input phase for(i=0;i<10;i++) { cout<<"Enter value :"; cin>>x[i]; } // processing phase change(x); // output phase cout<<"\n Modified List :"; for(i=0;i<10;i++) cout<<setw(6)<<x[i]; getch(); return 0;

}

Pointer & String String : it is an array of character, which always terminates with NULL (‘\0’). Char str[80]=”RAKESH”; // It’s allocation in stin is as follows 0 1 2 3 4 5 6 7 8 9 ……………………………………………………..79 R A K E S H \0

101 102 103 104 105………………………………………………………………………… ………180 cout<<str; // Please note that only the base address of string has been given to cout // and cout is here print the whole string not the base address Result : RAKESH Example 2. char str[80]=”RAKESH”; cout<<*str; // now compiler try to print value stored at base address Result : ‘R’ Example 3 char str[80]=”RAKESH”; cout<<*++str; // process nearest first Result : ‘A’

Page 5: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 5 of 11

Example 4 char str[80]=”RAKESH”; cout<<++*str; // process nearest first Result : ‘S’ Example 5 char str[80]=”RAKESH”; cout<<++str; // print 101 address onward upto NULL Result : AKESH

Pointers and Structure

Assigning and Accesssing structure type Pointers #include<iostream> #include<conio.h> using namespace std; struct student { int roll; char name[30]; char address[60]; }; int main() { student s; student *s1; s1= &s; //input phase cout<<"\n Enter roll no :"; cin>>s.roll; cout<<"\n Enter name :"; cin>>s.name; cout<<"\n Enter address :"; cin>>s.address; // output - using pointer variable cout<<"\n Roll :"<<(*s1).roll; // s1->roll cout<<"\n Nane :"<<(*s1).name; // s1->name; cout<<"\n Address :"<<(*s1).address; // s1->address getch(); return 0; }

Page 6: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 6 of 11

New ( ) : This function is used to assign memory to a pointer variable from the available memory heap. The function is responsible to calculate no of bytes and types of data, required. Delete ( ) : This function is used to release assigned pointer memory to memory heap Accessing Pointer Variable using new( ) and delete ( ) function #include<iostream> #include<conio.h> using namespace std; struct student { int roll; char name[30]; char address[60]; }; int main() { student *s; s= new(student); //input phase cout<<"\n Enter roll no :"; cin>>s->roll; cout<<"\n Enter name :"; cin>>s->name; cout<<"\n Enter address :"; cin>>s->address; // output - using pointer variable cout<<"\n Roll :"<<s->roll; cout<<"\n Name :"<<s->name; cout<<"\n Address :"<<s->address; delete(s); getch();

return 0; }

Self Referential Structure: A structure which can have a variable of it’s own type inside it’s declaration,

then the structure is known as self referential structure. Example struct student { Int roll; ` student *s; };

Example of link list #include<iostream> #include<iomanip> #include<conio.h> using namespace std; struct node { int info; node *ptr; }; int main() { node *x,*y,*temp ; x= NULL; int choice; do { system("cls"); cout<<"\n 1. Add at beginning";

Page 7: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 7 of 11

cout<<"\n 2. Add at end"; cout<<"\n 3. Delete from beginning"; cout<<"\n 4. Display "; cout<<"\n 5. Exit"; cout<<"\n\n\n Enter your choice :"; cin>>choice; switch(choice) { case 1: if(x==NULL) { x = new(node); cout<<"\n Enter value :"; cin>>x->info; x->ptr = NULL; } else { temp = new(node); cout<<"\n Enter value :"; cin>>temp->info; temp->ptr = x; x = temp; } break; case 2: if(x==NULL) { x = new(node); cout<<"\n Enter value :"; cin>>x->info; x->ptr = NULL; } else { y =x; while(y->ptr!=NULL) y = y->ptr; y->ptr = new(node); y = y->ptr; cout<<"\n Enter value :"; cin>>y->info; y->ptr = NULL; } break; case 3: if(x==NULL) { cout<<"\n Link List empty"; getch(); } else { temp =x; x = x->ptr; delete(temp); } break; case 4: if(x==NULL) cout<<"\n Link list empty"; else { y = x; while(y!=NULL) { cout<<setw(6)<<y->info; y = y->ptr;

Page 8: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 8 of 11

} } getch(); break; case 5: break; default: cout<<"\n Wrong Choice.... Try again"; getch(); } // end of switch statement }while(choice!=5); return 0; }

LINK LIST EMPLEMENTED STACK #include<iostream> #include<iomanip> #include<conio.h> using namespace std; struct node { int info; node *ptr; }; class stack { node *x,*y,*temp; public: stack() // constructor to initialize variable { x= NULL; } void push(void); // function to add element void pop(void); // function to delete element void display(void); // function to display stack element }; void stack::push() { if(x==NULL) { x = new(node); cout<<"\n Enter value :"; cin>>x->info; x->ptr = NULL; } else { temp = new(node); cout<<"\n Enter value :"; cin>>temp->info; temp->ptr = x; x = temp; } return; } void stack::pop(void) { if(x==NULL) { cout<<"\n Stack is empty"; getch(); } else

Page 9: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 9 of 11

{ temp =x; x = x->ptr; delete(temp); } return; } void stack::display() { if(x==NULL) cout<<"\n Link list empty"; else { y = x; while(y!=NULL) { cout<<setw(6)<<y->info; y = y->ptr; } } return; } int main() { stack S; int choice; do { system("cls"); cout<<"\n S T A C K M E N U "; cout<<"\n 1. Push"; cout<<"\n 2. Pop"; cout<<"\n 3. Display "; cout<<"\n 4. Exit"; cout<<"\n\n\n Enter your choice :"; cin>>choice; switch(choice) { case 1: S.push(); break; case 2: S.pop(); break; case 3: S.display(); getch(); break; case 4: break; default: cout<<"\n Wrong Choice.... Try again"; getch(); } }while(choice!=4); return 0; }

Link List Implemented queue #include<iostream> #include<iomanip> #include<conio.h> using namespace std; struct node {

Page 10: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 10 of 11

int info; node *ptr; }; class queue { node *x,*y,*temp; public: queue() // constructor to initliaze variable { x= NULL; } void add_element(void); // function to add element void delete_element(void); // function to delete element void display(void); // function to display stack element }; void queue::add_element() { if(x==NULL) { x = new(node); cout<<"\n Enter value :"; cin>>x->info; x->ptr = NULL; } else { y = x; while(y->ptr!=NULL) y = y->ptr; y->ptr = new(node); y = y->ptr; cout<<"\n Enter value :"; cin>>y->info; y->ptr = NULL; } return; } void queue::delete_element(void) { if(x==NULL) { cout<<"\n queue is empty"; getch(); } else { temp =x; x = x->ptr; delete(temp); } return; } void queue::display() { if(x==NULL) cout<<"\n Queue is empty"; else { y = x; while(y!=NULL) { cout<<setw(6)<<y->info; y = y->ptr;

Page 11: Pointers

Prepared By : Rakesh Kumar D.A.V.Centenary Public School Chander Nagar

Page 11 of 11

} } return; } int main() { queue q; int choice; do { system("cls"); cout<<"\n QUEUE M E N U "; cout<<"\n 1. Add Element"; cout<<"\n 2. Delete Element"; cout<<"\n 3. Display "; cout<<"\n 4. Exit"; cout<<"\n\n\n Enter your choice :"; cin>>choice; switch(choice) { case 1: q.add_element(); break; case 2: q.delete_element(); break; case 3: q.display(); getch(); break; case 4: break; default: cout<<"\n Wrong Choice.... Try again"; getch(); } }while(choice!=4); return 0; }