十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
并不是不匹配,而是允许的类型提升。实参和形参确实是类型应该一致。如果不一致但兼容,有些编译器还会给出相应的Warning。
10年积累的成都网站制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有下城免费网站建设让你可以放心的选择与我们合作。
我也遇到过这种问题,呵呵。一般是你在编写头文件时对函数的申明中没有参数或者只有一个参数,这样在源文件中你又在该函数数中带有两个或多个参数,编译器现实编译头文件的,这样与后来的源文件不一致,所以就出错了。
解决方法很简单,把你在源文件中该参数的定义复制到头文件中,然后在后面加分号就可以了。
例如:
源文件:void add(int a,int b,int c)
{ }
则头文件的申明为:
void add(int a,int b,int c);
#includestdio.h
void main()
{
void max(int x[],int y[]);//the declaration is corrected
int a[10],b[10],i;
for(i=0;i10;i++)
scanf("%d",a[i]);
for(i=0;i10;i++)
scanf("%d",b[i]);
max(a,b);// --------------为什么我不在a和b后面加[10]就提示错误?????
}
void max(int x[],int y[])//int x[] is equal to int* x it is suggested to use int* rather than int x[]
{
int an=0,bn=0,equal=0,i;
for(i=0;i10;i++)
{
if(x[i]y[i]) an++;
else if(x[i]y[i]) bn+=1;
else equal++;
}
if(anbn) printf("a is larger than b\n");
else if(anbn) printf("a is smaller than b\n");
else printf("a is equal to b\n");
printf("ab %d times\n",an);
printf("ab %d times\na=b %d times\n",bn,equal);
}