Home »
C programming language
Pointers in C language
Pointers
The pointer is a special type of variable, which points (stores) address of another variable. It provides direct access to memory. Using the pointer variable you can store the address of another simple variable even you can access/edit the value of that variable.
Declaration of pointer variables
A pointer variable declares followed by an asterisk sign (*).
Syntax
data-type *pointer-variable;
---
int* a; //integer pointer variable
float* b; // float pointer variable
char* c; // character pointer variable
struct student* std; // integer pointer variable
Each pointer variable takes 2 bytes (in 16 bytes compilers)/ 4 bytes (in 32 bytes compilers) in the memory, no matter what type of variable is it?
Initialization of a pointer variable
Each pointer variable must be initialized with the valid address of another variable. Since a pointer contains the address only, so you can not assign a value directly in it.
Syntax
// Initialization with declaration
data-type *pointer-variable= &another-variable;
// Initialization after declaration
data-type *pointer-variable;
pointer-variable= &another-variable;
---
int var1,var2;
//Initialization with declaration
int *a=&var1;
// Initialization after declaration
int *b;
b = &var2;
Example
#include <stdio.h>
int main()
{
int var = 100;
int* ptr; /*pointer declaration*/
ptr = &var; /*pointer initialization*/
printf("\nValue of var= %d", *ptr);
printf("\nAddress of var= %X", ptr);
return 0;
}
Output
Value of var= 100
Address of var= 94FE9C
Advantages of using pointers
- As we know a function can return a single value but using pointers we can return multiple values from the functions.
- Generally, we declare memory to variables at the compile time but there is a problem either we need more memory or we occupy extra memory space. Using the pointers we can allocate memory to the variable at run time and of course, we can resize it while execution time.
- Using pointers we can design complex data structures like Stack Queue, Linked List, and Tree, etc.
- Generally, we can not change the value of a variable in a function (call by value) but using pointers (call by reference) we can change the actual values of the parameters.
- And pointers allow direct memory access.
Disadvantages of using pointers
- Pointers allow direct memory access, it can access protected memory locations.
- If the pointer is uninitialized, it can be the cause of the segmentation fault.
- These are slower than other simple variables.
- Pointers need free dynamically allocated memory.