C Programming - Arrays - Discussion

Discussion Forum : Arrays - Yes / No Questions (Q.No. 3)
3.
Is there any difference int the following declarations?
int fun(int arr[]);
int fun(int arr[2]);
Yes
No
Answer: Option
Explanation:

No, both the statements are same. It is the prototype for the function fun() that accepts one integer array as an parameter and returns an integer value.

Discussion:
14 comments Page 1 of 2.

Bhavesh said:   1 decade ago
The first statement signifies that any number of elements are possible in the array ?

Arun said:   1 decade ago
You can pass an array of any size in d first one, where as in the 2nd one you can atmost pass an array of size 2.

Rahul said:   1 decade ago
According to Comments given by @Bhavesh and @Arun how is it possible that both are same statements,bcoz the size is different for array in the declarations.

Niyati said:   1 decade ago
I am satisfied with Arun,in 1st function declaration there is no specification of the size of array it accepts i.e. it can take an array of any size, but in second function declaration there is size of array specified so it can accept the array of atmost size 2,then How can these two statements be same

Maikal said:   1 decade ago
Thanks niyati, your question is very intresting but can you say me what will be the fix size in int arr[2]& int arr[] when int is not define. So its are same because thease are prototype function.

Raj said:   1 decade ago
Thanks niyati nice explanation.

Vijay said:   1 decade ago
In give example,
int fun(int arr[]) is the passing the base element of an array & on other hand int fun(int arr[2]) is passing the third element of array. then why they r equal ?

Ravindra bagale said:   1 decade ago
@All.

Hello friends, this is just a declaration.
Declaration is all about just knowing the data type.
It is enough to know that, it is an array of int.
Subscript doesn't matter here.

int fun (int arr[]) ;
int fun (int arr[]) ;

Same.

int fun (int arr[]) ;
int fun (int arr[2]) ;

Same.

int fun (int arr[2]) ;
int fun (int arr[5]) ;

Same.

Ajay said:   1 decade ago
#include<stdio.h>
int main()
{
int arr[5],i;
for(i=0; i<=10; i++)
{
arr[i]=i;
}
return 0;
}

You can see, we don't reach beyond the array size, is entirely the programmer's botheration not the compiler's.

How can you say that both are same please explain me?

Ankit Jain said:   1 decade ago
#include<stdio.h>
int func(int arr[5]);

int main()
{
int arr[10],i;
for(i=0; i<10; i++)
{
arr[i]=i;
}
func(arr);
return 0;
}
int func(int arr[5])
{
int i;
for(i=0; i<10; i++)
{
printf("%d ",arr[i]);
}
}


O/P:
0 1 2 3 4 5 6 7 8 9

Therefore Answer is : same.

used gcc compiler.


Post your comments here:

Your comments will be displayed after verification.