标题:很短的代码 很简单的功能 出了点小问题
只看楼主
迪拜axq
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2012-9-21
结帖率:71.43%
已结贴  问题点数:20 回复次数:10 
很短的代码 很简单的功能 出了点小问题
运行环境为VC++6.0 功能为:求两个数最大值
  代码如下
程序代码:
[color=#0000FF]#include "stdafx.h"

int max(int *x,int *y)
{
    if(*x>*y)
        return *x;
    else
        return *y;
   
}

int main(int argc, char* argv[])
{ 
    int max(int *,int *);
    int (*fun)(),a=0,b=0;
    scanf("%d%d ",&a,&b);
    fun=max;
    printf("%d\n",((*fun)(&a,&b)));
    return 0;

}
编译时提示:
D:\Microsoft Visual Studio\MyProjects\charter10\008.cpp(20) : error C2440: '=' : cannot convert from 'int (__cdecl *)(int,int)' to 'int (__cdecl *)(void)'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\Microsoft Visual Studio\MyProjects\charter10\008.cpp(21) : error C2197: 'int (__cdecl *)(void)' : too many actual parameters
Error executing cl.exe.

008.obj - 2 error(s), 0 warning(s)
[/color]

[ 本帖最后由 迪拜axq 于 2012-9-22 09:46 编辑 ]
搜索更多相关主题的帖子: 运行环境 最大值 
2012-09-21 21:55
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:6 
#include "stdio.h"

int max(int *x,int *y)
{
    if(*x>*y)
        return *x;
    else
        return *y;
   
}

int main(int argc, char* argv[])
{
    int max(int*,int*);
    int (*fun)(),a,b;
    scanf("%d%d",&a,&b);
    fun=max;
    printf("%d\n",((*fun)(&a,&b)));
    return 0;

}
给你改好了   好好看看你的错误

喜欢睡觉 却经常熬夜
2012-09-21 22:39
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
以下是引用迪拜axq在2012-9-21 21:55:51的发言:

 运行环境为VC++6.0 功能为:求两个数最大值
  代码如下#include "stdafx.h"
 
int max(int *x,int *y)
{
    if(*x>*y)
        return *x;
    else
        return *y;
   
}
 
int main(int argc, char* argv[])
{  
    int max(int *,int *); //////////////////////这里既然函数已经在主函数前面了  就没与必要声明了    但是声明也可以  你要声明对啊
    int (*fun)(),a=0,b=0;
    scanf("%d %d ",&a,&b); /////////////////这一句 也有问题
    fun=max;
    printf("%d\n",((*fun)(&a,&b)));
    return 0;
 
}编译时提示:
D:\Microsoft Visual Studio\MyProjects\charter10\008.cpp(20) : error C2440: '=' : cannot convert from 'int (__cdecl *)(int,int)' to 'int (__cdecl *)(void)'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\Microsoft Visual Studio\MyProjects\charter10\008.cpp(21) : error C2197: 'int (__cdecl *)(void)' : too many actual parameters
Error executing cl.exe.

008.obj - 2 error(s), 0 warning(s)
好了   其实不应该这样给你代码 可谁叫我好人呢

[ 本帖最后由 阿鞠尼 于 2012-9-21 22:44 编辑 ]

喜欢睡觉 却经常熬夜
2012-09-21 22:42
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:3 
又不是交换,只有求大值,不用传指针

总有那身价贱的人给作业贴回复完整的代码
2012-09-21 23:58
wtw199186
Rank: 2
等 级:论坛游民
帖 子:55
专家分:78
注 册:2012-9-22
得分:8 
#include "stdio.h"
 
int max(int *x,int *y)
 {
     if(*x>*y)
         return *x;
     else
         return *y;
   
 }
 
int main(int argc, char* argv[])
 {
    int max(int *,int *);
     int (*fun)(int *,int *),a=0,b=0;   \*看看这行*\     
     scanf("%d%d",&a,&b);               \*还有这行*\
     fun=max;
     printf("%d\n",((*fun)(&a,&b)));
     return 0;
 
}
这个就可以运行了!
2012-09-22 08:02
迪拜axq
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2012-9-21
得分:0 
回复 2楼 阿鞠尼
大神 改了还是那样子的提示
2012-09-22 09:42
QQ007977
Rank: 2
等 级:论坛游民
帖 子:29
专家分:43
注 册:2012-9-9
得分:3 
#include<stdlib.h>
#include "stdio.h"
int max(int *x,int *y)
{
    if(*x>*y)
        return *x;
    else
        return *y;
}
int main()
{
    int (*fun)(),a,b;
    scanf("%d%d",&a,&b);
    fun=max;
    printf("%d\n",((*fun)(&a,&b)));
    system("pause");
    return 0;
}
2012-09-22 11:16
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
回复 6楼 迪拜axq
呵呵  那你看看我给你的代码吧  注意“空格”不能乱填

喜欢睡觉 却经常熬夜
2012-09-22 13:43
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
回复 6楼 迪拜axq
另外  俺就是一只小菜鸟   学习学习 菜鸟而已

喜欢睡觉 却经常熬夜
2012-09-22 13:44
迪拜axq
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2012-9-21
得分:0 
回复 9楼 阿鞠尼
还是谢谢啊 今天有同学解释了了  真正的问题是“指向函数的指针function中,未设置形参”

错误提示里有:cannot convert from 'int (__cdecl *)(int,int)' to 'int (__cdecl *)(void)'

两个函数的类型有误

应该是这样
int (*fun)(int *,int *);
2012-09-23 19:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-381845-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.711350 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved