C Pointer to Pointer

In C pointer to pointer concept, a pointer refers to the address of another pointer.



Pointer to Pointer in C language

In c language, a pointer can point to the address of another pointer which points to the address of a value. Let’s understand it by the diagram given below:


Let’s see the syntax of pointer to pointer.

  • int **p2;  


C pointer to pointer example

Let’s see an example where one pointer points to the address of another pointer.


As you can see in the above figure, p2 contains the address of p (fff2) and p contains the address of number variable (fff4).

  • #include<stdio.h>  
  • int main()
  • {  
  • int number=50;      
  • int *p;//pointer to int    
  • int **p2;//pointer to pointer        
  • p=&number;//stores the address of number variable      
  • p2=&p;    
  • printf(“Address of number variable is %x \n”,&number);      
  • printf(“Address of p variable is %x \n”,p);      
  • printf(“Value of *p variable is %d \n”,*p);      
  • printf(“Address of p2 variable is %x \n”,p2);      
  • printf(“Value of **p2 variable is %d \n”,*p);      
  • return 0;  
  • }       


Address of number variable is fff4
Address of p variable is fff4
Value of *p variable is 50
Address of p2 variable is fff2
Value of **p variable is 50