Skip to main content

How to pass a pointer as an argument to function in c?

If we pass arguments to function by reference, then the called function can alter the value of variable in the calling function.

Basically, we pass address of the variables as arguments to the called function.  So, any modification to the value of the arguments of called function is carried out to the calling function.

Below program explains how to pass pointer as argument to function.


  #include <stdio.h>

  void swap(int *num1, int *num2) {
        int tmp;

        /* printing the pointer(arguments) value */
        printf("\nAddresses inside called function:\n");
        printf("Pointer value of num1: 0x%x\n", (int)num1);
        printf("Pointer value of num2: 0x%x\n", (int)num2);

        /* swapping two numbers */
        tmp = *num1;
        *num1 = *num2;
        *num2 = tmp;
        return;
  }

  int main() {
        int num1, num2;

        /* get the inputs from the user */
        printf("Enter your first integer:");
        scanf("%d", &num1);
        printf("Enter your second integer:");
        scanf("%d", &num2);

        /* printing values before swap operations */
        printf("\nValues before swapping:\n");
        printf("num1: %d\tnum2: %d\n", num1, num2);

        /* printing address of the variables before calling swap() function */
        printf("\nAddress of the variables inside calling function:\n");
        printf("Address of num1: 0x%x\n", (int)&num1);
        printf("Address of num2: 0x%x\n", (int)&num2);

        /* passing pointer(address of variable) as argument */
        swap(&num1, &num2);

        /* print the values after swap operation */
        printf("\nValues after swapping:\n");
        printf("num1: %d\tnum2: %d\n", num1, num2);
        return 0;
  }



  Output:
  jp@jp-VirtualBox:~/$ ./a.out
  Enter your first integer:100
  Enter your second integer:500

  Values before swapping:
  num1: 100 num2: 500

  Address of the variables inside calling function:
  Address of num1: 0xbfdd3f0c
  Address of num2: 0xbfdd3f08

  Addresses inside called function:
  Pointer value of num1: 0xbfdd3f0c
  Pointer value of num2: 0xbfdd3f08

  Values after swapping:
  num1: 500 num2: 100


Comments

Popular posts from this blog

Array of pointer to structure

Array of pointer to structure is nothing but an array whose elements are pointers to structure How to declare array of pointer to structure? Below is an example declaration for array of pointer to structure. struct student *arr[10]; Here, arr is an array 10 of pointer to structure student. Dynamic memory allocation: Below is the procedure to perform dynamic memory allocation for the structure pointers in an array. struct student { int age; char name[32]; }; fun() { int i = 0; struct student *arr[10]; for (i = 0; i < 10; i++) { /* dynamic memory allocation for 5 structure objects */ arr[i] = (struct student *)malloc(sizeof(struct student) * 5); } } Write a c program to pass an array of structure pointers to another function   #include <stdio.h>   #include <stdlib.h>   #include <string.h>   struct student {         int age, rollno;         char name[32];   };   /* printing details of stude...

Nested function in C

What is nested function? If a function is defined inside another function, then it is called as nested function.  Nested function example in C: Consider the following example, int add(int a, int b) {        void print(int res) {          printf("Result is %d, res);       }       print(a+b);       return 0; } Here, print() is a nested function.  Because, it is defined inside another function named add() . Example C program using nested functions: #include <stdio.h> void add(int a, int b) { void print(int res) { // nested function printf("Result is %d\n", res); return; } print(a + b); // passing sum of a and b as parameter return; } int main() { add(10, 20); return 0; }   Output:   jp@jp-VirtualBox:~/$ ./a.out   Result is 30 Previous Next

Difference between asterisk and ampersand operators in c

Address Operator (& - Ampersand): Returns address of the given variable.  Consider the following example, int *ptr, var = 10; ptr = &var; ptr = &var sets the address of the variable var to pointer ptr.  & is also called as reference operator. Let us try to understand the purpose of reference operator using the following example program.   #include <stdio.h>   int main() {         int var = 10, *ptr;         /* assigning address of variable var to pointer ptr */         ptr = &var;         /* printing the address of the variable var */         printf("Address of var is 0x%x\n", &var);         /* printing the value of pointer ptr */         printf("Value of ptr is 0x%x\n", ptr);         return 0;   }   Output:   jp@jp-VirtualBox:~/$ ./a.out   Address of var is 0x...