C Programming - Functions - Discussion

Discussion Forum : Functions - Find Output of Program (Q.No. 2)
2.
What will be the output of the program?
#include<stdio.h>
void fun(int*, int*);
int main()
{
    int i=5, j=2;
    fun(&i, &j);
    printf("%d, %d", i, j);
    return 0;
}
void fun(int *i, int *j)
{
    *i = *i**i;
    *j = *j**j;
}
5, 2
10, 4
2, 5
25, 4
Answer: Option
Explanation:

Step 1: int i=5, j=2; Here variable i and j are declared as an integer type and initialized to 5 and 2 respectively.

Step 2: fun(&i, &j); Here the function fun() is called with two parameters &i and &j (The & denotes call by reference. So the address of the variable i and j are passed. )

Step 3: void fun(int *i, int *j) This function is called by reference, so we have to use * before the parameters.

Step 4: *i = *i**i; Here *i denotes the value of the variable i. We are multiplying 5*5 and storing the result 25 in same variable i.

Step 5: *j = *j**j; Here *j denotes the value of the variable j. We are multiplying 2*2 and storing the result 4 in same variable j.

Step 6: Then the function void fun(int *i, int *j) return back the control back to main() function.

Step 7: printf("%d, %d", i, j); It prints the value of variable i and j.

Hence the output is 25, 4.

Discussion:
24 comments Page 3 of 3.

Pullareddy said:   8 years ago
Call by reference is the with in the function we can passed the address to the variable function. That we can call the sub function that's why call the value is called call by reference.

Hemanth kumar.v said:   7 years ago
Actually here we are using call by the reference method, by using this method we can change the values directly present in that address.

Harish Mahajan said:   7 years ago
Pointer multiplication is not allowed then how it is possible?

Dipak said:   5 years ago
Pointer multiplication is not allowed in C.

But here we take multiplication of the value of pointer means *i is storing value of i so we multiply the value of i.

If it's given like i*i then this give an error because we doing multiplication of pointer which is not allowed in C.


Post your comments here:

Your comments will be displayed after verification.