C Programming

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.

Premium E-Books & Study Materials.

Access university-specific notes and programming guides. Download instantly to start studying.

Share Article :
Python DSA Ebooks cover

TopperWorld
Prime E-Books

Master programming and core CS concepts with expert-curated study guides.

Recent Tutorials :

Best Hostinger Discount Code 2025 | Hostinger Referral Code For Extra Discount
Java Most Asked Interview Question and Answer
Top 10 AI companies in India
How Generative AI is Transforming Programming
Top GITHUB Interview Questions and Answers