#include <stdio.h>main(){int a,b,c;int *p;scanf("%d%d%d",&a,&b,&c);p=fun_cmp(&a,&b,&c);printf("%d %d\n",p,*p);}int *fun_cmp(int *x,int *y,int *z ){if(*x>=*y&&*x>=*z) return x;if(*y>=*x&&*y>=*z) return yelse return z;}附加一道類似的,#include <stdio.h>main() /*返回值是指針*/{int *fun_cmp(int *x,int *y);int a,b;int *p;scanf(" %d %d ",&a,&b);p=fun_cmp(&a,&b);printf("%d\n",p); /**/printf("%d\n ",*p); /**/}int *fun_cmp(int *x,int *y){if(*x>*y) return x;else return y;}如果把scanf換成 int a=1,b=2; 的話此程序就正常;請求以上兩題(特別是第一題)的解答第一道題的錯誤信息如下:warning C4013: 'fun_cmp' undefined; assuming extern returning intwarning C4047: '=' : 'int *' differs in levels of indirection from 'int 'error C2040: 'fun_cmp' : 'int *(int *,int *,int *)' differs in levels of indirection from 'int ()'error C2143: syntax error : missing ';' before 'else'
2 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
第一題少了一個聲明 int *fun_cmp(int *x,int *y,int *z),或者你把函數的調用那部分放到前面去就可以省略這個聲明,
int *fun_cmp(int *x,int *y,int *z )
{
if(*x>=*y&&*x>=*z) return x;
if(*y>=*x&&*y>=*z) return y
else return z;
}
這部分寫的不是很清晰,而且出現了錯誤,最好寫成
int *fun_cmp(int *x,int *y,int *z )
{
if(*x>=*y&&*x>=*z)
return x;
else if(*y>=*x&&*y>=*z)
return y;
else
return z;
}
這樣看起來是不是好點?這程序還有其他的錯誤,因為我對指針還不是很熟悉,不知道怎么改了,希望對你有點幫助
- 2 回答
- 0 關注
- 182 瀏覽
添加回答
舉報
0/150
提交
取消