Pointers in C

A pointer is a variable pointing to the address of another variable. It is declared along with an asterisk symbol (*). A pointer can also be used to refer to another pointer function. A pointer can be incremented/decremented, i.e., to point to the next/ previous memory location. The purpose of pointer is to save memory space and achieve faster execution time.

The syntax to declare a pointer is as follows:

     datatype *var1

The syntax to assign the address of a variable to a pointer is:

     datatype var1, *var2;
      var2=&var1

A simple program for pointer illustration is given below:

#include <stdio.h>
int main()
{
   int a=20;    //variable declaration
   int *p;      //pointer variable declaration
   p=&a;        //store address of variable a in pointer p
   printf("Address stored in a variable p is:%x\n",p);  //accessing the address
   printf("Value stored in a variable p is:%d\n",*p);   //accessing the value
   return 0;
}

Output:-

Address stored in a variable p is:60ff08
Value stored in a variable p is:20
Operator Meaning
*Serves 2 purpose
1 . Declaration of a pointer
2 . Returns the value of the referenced variable
&Serves only 1 purpose
Returns the address of a variable

Advantages of Pointers in C:-

  • Pointers provide direct access to memory
  • Pointers provide a way to return more than one value to the functions
  • Reduces the storage space and complexity of the program
  • Reduces the execution time of the program
  • Provides an alternate way to access array elements
  • Pointers can be used to pass information back and forth between the calling function and called function.
  • Pointers allows us to perform dynamic memory allocation and deallocation.
  • Pointers helps us to build complex data structures like linked list, stack, queues, trees, graphs etc.
  • Pointers allows us to resize the dynamically allocated memory block.
  • Addresses of objects can be extracted using pointers

Disadvantages of Pointers in C:-

  • Uninitialized pointers might cause segmentation fault.
  • Dynamically allocated block needs to be freed explicitly. Otherwise, it would lead to memory leak.
  • Pointers are slower than normal variables.
  • If pointers are updated with incorrect values, it might lead to memory corruption.


Basically, pointer bugs are difficult to debug. Its programmers responsibility to use pointers effectively and correctly.

Leave a Comment

Your email address will not be published. Required fields are marked *