C语言中函数定义形参为数组时的问题

看到这样一个例子
#define size 10
main(){
int a[size],k...;
.........
n=find(a,size,k);
........
}
/*下面定义函数find*/
int find(v,n,k)
int v[];/*数组参数*/
int n;/*数组元素个数*/
int k;
{
......
}
=============
我想问的问题是
1,main里面调用find函数的时候,为什么不写a[size]而写的是a?
2,在定义find函数的时候,为什么形参定义的时候可以写“int v[]”?虽然下面定义了“int n”为数组个数。我不理解的是,不是规定不能定义一个没有元素个数的数组吗?为什么这里int v[]没有错误?

1.数组为参数传递的是数组首地址,而不是元素的值,而你说的a[size]仅仅是值,况且事实上也没有a[size]这个元素
2.既然是数组名的传递,当然需要由一个数组的参数来接收,int v[]”的问题是因为他是形式参数,是为了接收数组的
n的问题是因为,如果只传递了数组,但是函数并找不到数组的个数,所以需要把数组大小传递过来
温馨提示:答案为网友推荐,仅供参考
相似回答