简单的数组作为函数参数的调用问题

#include
main()
{
int a[10]={10,2,8,22,16,4,10,6,14,20};
int n=0;
int i;
int f(int);
while(f(a[])) (此处去除中括号则调试无误,这是为什么?)
{
n++;
for(i=0;i<=9;i++)
{
if(a[i]%2==1)
{
a[i]=(a[i]+1)/2;
a[i+1]+=(a[i]+1)/2;
}
else a[i]=a[i]/2;
}
}

printf("经过%d次调整,每人都有%d块糖\n",n,a[0]);
}

/*检查每个人糖果数是否相等的函数*/
int f(int b[])
{
int k;
for(k=1;k<=9;k++)
if(b[0]!=b[k]) return 1;
return 0;
}

2个回答

不带中括号,你调用的是你main方法中的那个啥也不干的f方法吧

twinkle_snow
twinkle_snow 回复twinkle_snow: 哦我明白了。
4 年多之前 回复
twinkle_snow
twinkle_snow 老师,您能说得具体点吗,我不是很明白
4 年多之前 回复

形参int b[]是声明,表示接收一个整型数组的变量
调用的时候就要传入整型数组的变量
a就是一个整型数组的变量

a[]实际的错误是没有下标,而加了下标a[n]则是一个整型变量,那就更不对了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问