Open In App

Applications of Pointers in C

Last Updated : 08 Jan, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

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




// C program to demonstrate that we can change
// local values of one function in another using pointers.
 
#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;
}


Output

20 10







ii.) For Efficiency Purpose

Example

The below example demonstrates the use of pointers to write efficient code.

C




#include <stdio.h>
 
// function to print an array by passing reference to array
void printArray(int* arr, int n)
{
    // here array elements are passed by value
    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;
}


Output

1 2 3 4 5 






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




// C program to demonstrate that compiler
// internally uses pointer arithmetic to access
// array elements.
 
#include <stdio.h>
 
int main()
{
    int arr[] = { 100, 200, 300, 400 };
 
    // Compiler converts below to *(arr + 2).
    printf("%d ", arr[2]);
 
    // So below also works.
    printf("%d\n", *(arr + 2));
 
    return 0;
}


Output

300 300 






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




// C program to demonstrate that using a pointer
// we can return multiple values.
 
#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;
}


Output

10000 10






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




// C program to dynamically allocate an
// array of given size.
 
#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
Previous
Next
Share your thoughts in the comments

Similar Reads