C Programming - Arrays - Discussion

Discussion Forum : Arrays - Point Out Correct Statements (Q.No. 1)
1.
Which of the following is correct way to define the function fun() in the below program?
#include<stdio.h>

int main()
{
    int a[3][4];
    fun(a);
    return 0;
}
void fun(int p[][4])
{
}
void fun(int *p[4])
{
}
void fun(int *p[][4])
{
}
void fun(int *p[3][4])
{
}
Answer: Option
Explanation:

void fun(int p[][4]){ } is the correct way to write the function fun(). while the others are considered only the function fun() is called by using call by reference.

Discussion:
14 comments Page 1 of 2.

Sai narendra said:   1 decade ago
Hi, when we use *in front of the formal perameters (those perameters are in called function) it represents function is called by reference. That means the change of the values of the variables is perminant.

Sravan.rkv said:   1 decade ago
Thank you sai narendra my doubt is cleared.

Saisiva said:   1 decade ago
How the function fun(a) implies fun(int p[][4])?

OMKAR GURAV said:   10 years ago
Why it cannot be call by reference function and option C be the answer?

Shreya said:   10 years ago
Here passing the address so we should use pointer. Then how first option is correct?

Kelvin D said:   9 years ago
According to me, the answer should be option C.

Fizzz said:   9 years ago
The name of the array "a'' represents the base address. We should be receiving a pointer to a 2D array instead of the array itself.

Harsha vardhan said:   9 years ago
Does fun() means calling any function?

Suraj said:   9 years ago
Here we are sending the base address of 'a'(2d-array). So it should be received by a pointer to 1d-array.

example:
char n[10][20];
input(n);
void input(char (*p)[20])
{
}

Dipika More said:   9 years ago
Option A is right and array always passed by reference by default.


Post your comments here:

Your comments will be displayed after verification.