Applications of Pointers in C
Last Updated :
08 Jan, 2024
Pointers in C are variables that are used to store the memory address of another variable. Pointers allow us to efficiently manage the memory and hence optimize our program. In this article, we will discuss some of the major applications of pointers in C.
Prerequisite: Pointers in C.
C Pointers Application
The following are some major applications of pointers in the C programming language:
1. Passing Arguments by Reference
Passing arguments by reference serves two purposes:
i.) to modify the variable in another function.
Example
The below example demonstrates the use of pointers by swapping two numbers.
C
#include <stdio.h>
void swap( int * x, int * y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int x = 10, y = 20;
swap(&x, &y);
printf ( "%d %d\n" , x, y);
return 0;
}
|
ii.) For Efficiency Purpose
Example
The below example demonstrates the use of pointers to write efficient code.
C
#include <stdio.h>
void printArray( int * arr, int n)
{
for ( int i = 0; i < n; i++) {
printf ( "%d " , arr[i]);
}
}
int main()
{
int arr[5] = { 1, 2, 3, 4, 5 };
printArray(arr, 5);
return 0;
}
|
Note: Passing large structure without reference would create a copy of the structure (hence wastage of space).
2. For Accessing Array Elements
Compiler internally uses pointers to access array elements. We can also use these pointers to access and modify the elements of the given array.
Example
The below example demonstrate the use of pointers to access elements of an array.
C
#include <stdio.h>
int main()
{
int arr[] = { 100, 200, 300, 400 };
printf ( "%d " , arr[2]);
printf ( "%d\n" , *(arr + 2));
return 0;
}
|
3. To Return Multiple Values
The functions in C can only return a single value, but we can use pointers to return multiple values from a C function.
Example
The below example demonstrates the use of pointers to return square and square root of numbers using pointers.
C
#include <math.h>
#include <stdio.h>
void fun( int n, int * square, double * sq_root)
{
*square = n * n;
*sq_root = sqrt (n);
}
int main()
{
int n = 100;
int sq;
double sq_root;
fun(n, &sq, &sq_root);
printf ( "%d %f\n" , sq, sq_root);
return 0;
}
|
4. For dynamic memory Allocation
We can use pointers to dynamically allocate memory i.e Dynamic memory allocation. The advantage of dynamically allocated memory is, it is not deleted until we explicitly delete it.
Example
The below example shows the use of pointers to dynamically allocate memory.
C
#include <stdio.h>
#include <stdlib.h>
int * createArr( int n)
{
int * arr = ( int *)( malloc (n * sizeof ( int )));
return arr;
}
int main()
{
int * pt = createArr(10);
return 0;
}
|
FAQs on Application of Pointers in C
Q1. What are the uses of a pointer?
Answer:
Pointer is used in the following cases
i) It is used to access array elements
ii) It is used for dynamic memory allocation.
iii) It is used in Call by reference
iv) It is used in data structures like trees, graph, linked list etc.
Q2. Are pointers integer?
Answer:
No, pointers are not integers. A pointer is an address and a positive number.
Q3. What does the error ‘Null Pointer Assignment’ means and what causes this error?
Answer:
As null pointer points to nothing so accessing a uninitialized pointer or invalid location may cause an error.
Q4. How pointer variables are initialized?
Answer:
Pointer variables are initialized by one of the following ways.
I. Static memory allocation
II. Dynamic memory allocation
Q5. What is pointer to a pointer?
Answer:
If a pointer variable points another pointer value. Such a situation is known as a pointer to a
pointer.
Example:
int *p1,**p2,v=10;
P1=&v; p2=&p1;
Here p2 is a pointer to a pointer
Q6. What is an array of pointers?
Answer:
If the elements of an array are addresses, such an array is called an array of pointers.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...