当前位置: 代码迷 >> C语言 >> [求助]'int *' differs in levels of indirection from 'int ' 的警告
  详细解决方案

[求助]'int *' differs in levels of indirection from 'int ' 的警告

热度:1395   发布时间:2007-10-20 23:11:52.0
[求助]'int *' differs in levels of indirection from 'int ' 的警告

#include<stdio.h>
int main(void){
int n,m,a[1000]; /*用a【】存放结果*/
int check(int *p);

for(n=0;n<1000;n++){
a[n]=0;
} /*给a[]赋值*/
for(n=1,a[0]=1;n<=40;n++){
for(m=0;m<1000;m++){
a[m]*=n;
} /*循环,依次相乘*/
for(m=0;m<1000;m++){
check(a[m]); /*逢十进一*/
}
}
for(m=999;m>=0;m--){
printf("%d",a[m]);
}
return 0;
}
int check(int *p){
int jin;
if(*p>=10){
jin=*p%10;
*p-=jin*10;
*(p+1)+=jin;
check(*(p+1));
}
return 0;
}

vc++编译 有四个警告
F:\c\jicheng2.c(14) : warning C4047: 'function' : 'int *' differs in levels of indirection from 'int '
F:\c\jicheng2.c(14) : warning C4024: 'check' : different types for formal and actual parameter 1
F:\c\jicheng2.c(28) : warning C4047: 'function' : 'int *' differs in levels of indirection from 'int '
F:\c\jicheng2.c(28) : warning C4024: 'check' : different types for formal and actual parameter 1
怎么解决?

搜索更多相关的解决方案: int  differs  indirection  levels  警告  

----------------解决方案--------------------------------------------------------
int check(int *p){
int jin;
if(*p>=10){
jin=*p%10;
*p-=jin*10;
*(p+1)+=jin;
check(*(p+1));
}

----------------解决方案--------------------------------------------------------
你的check()参数好像是int类型的指针吧,可是你在递归调用的时候写道check(*(p+1));已经成了不是指针类型了。。
斑竹好像已经给你指出来了!!呵呵
----------------解决方案--------------------------------------------------------
check()形参是指针,实参却成了int型数了
----------------解决方案--------------------------------------------------------
呵呵明白了  谢谢大家了
----------------解决方案--------------------------------------------------------
for(n=1,a[0]=1;n<=40;n++){
for(m=0;m<1000;m++){
a[m]*=n;
}
for(m=0;m<1000;m++){
check(&a[m]);
}
}


a【m】不是地址吗?为什么非得加上&才能没有警告?
而且运行结果也不对,程序哪里有错?
----------------解决方案--------------------------------------------------------
a【m】是值
----------------解决方案--------------------------------------------------------

scanf("%d",a[m]); 不是就不用写成scanf("%d",&a[m]); 吗?


----------------解决方案--------------------------------------------------------