C Programming - Arrays - Discussion

Discussion Forum : Arrays - Find Output of Program (Q.No. 3)
3.
What will be the output of the program ?
#include<stdio.h>

int main()
{
    void fun(int, int[]);
    int arr[] = {1, 2, 3, 4};
    int i;
    fun(4, arr);
    for(i=0; i<4; i++)
        printf("%d,", arr[i]);
    return 0;
}
void fun(int n, int arr[])
{
    int *p=0;
    int i=0;
    while(i++ < n)
        p = &arr[i];
    *p=0;
}
2, 3, 4, 5
1, 2, 3, 4
0, 1, 2, 3
3, 2, 1 0
Answer: Option
Explanation:

Step 1: void fun(int, int[]); This prototype tells the compiler that the function fun() accepts one integer value and one array as an arguments and does not return anything.

Step 2: int arr[] = {1, 2, 3, 4}; The variable a is declared as an integer array and it is initialized to

a[0] = 1, a[1] = 2, a[2] = 3, a[3] = 4

Step 3: int i; The variable i is declared as an integer type.

Step 4: fun(4, arr); This function does not affect the output of the program. Let's skip this function.

Step 5: for(i=0; i<4; i++) { printf("%d,", arr[i]); } The for loop runs untill the variable i is less than '4' and it prints the each value of array a.

Hence the output of the program is 1,2,3,4

Discussion:
25 comments Page 3 of 3.

Lingam said:   8 years ago
Please explain the while loop condition not used please explain.

Preeti said:   6 years ago
In fun(4, arr) function , there is no printf statement. So it does not affect output.

Aamir said:   5 years ago
In fun function, only changes are made to p and *p, arr is unaffected. It is not being used on the left-hand side of any statement. So the line fun(4, arr) has no effect on the code.

Anon said:   3 years ago
fun(4,arr) can have an effect on the code.

It doesn't in this case due to the way the while loop is defined, which changes arr[4] (which doesn't concern us).

Replace i++ with ++i to see if the while loop has an effect on the values of the array.

Vignesh J said:   3 years ago
fun(4,arr) does not have an effect on the code because at the termination of the while loop.
while(i++ < n)
p = &arr[i];
n will be 4 and p = &arr[4] (which is outside the size of the array)
So, when *p = 0;, value at arr[4] will be 0 which is outside the limit of the array so it function call will not have any effect.
(2)


Post your comments here:

Your comments will be displayed after verification.