关函数指针,.....运行时报错了,咋整??
本帖最后由 欣欣celin 于 2014-4-25 22:00 编辑/******
设一个函数PROCESS,在调用它的时候,每次实现不同的功能
输入A和B,第一次调用PROCESS时找出大的,
第二次找出小的,第三次求和
********/
#include <stdio.h>
void main()
{
int max(int, int);
int min(int, int);
int add(int, int);
void process(int x, int y, int(*fun)());
int a, b;
printf("enter a and b: ");
scanf("%d %d", &a, &b);
printf("max = ");
process(a, b, max);
printf("min = ");
process(a, b, min);
printf("sum = ");
process(a, b, add);
}
int max(int x, int y)
{
int z;
if(x > y)
{
z = x;
}
else
{
z = y;
}
return z;
}
int min(int x, int y)
{
int n = x;
if( x>y )
{
n = y;
}
return n;
}
int add(int x, int y)
{
int sum;
sum = x + y;
return sum;
}
以上程式不知咋嘀,编译没错,运行报错如下,咋整??
各路大神请赐教,十分感谢{:7_154:}
--------------------Configuration: process - Win32 Debug--------------------
Linking...
process.obj : error LNK2001: unresolved external symbol _process
Debug/process.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
process.exe - 1 error(s), 0 warning(s)
有几个错误 给你修改了一下
#include <stdio.h>
intmain()
{
int Max(int,int);//声明计算函数的形参类型
int Min(int,int);//声明计算函数的形参类型
int Add(int,int);//声明计算函数的形参类型
void process( int x, int y, int(fun)(int,int));//声明过程函数的形参类型
int a, b;
printf("enter a and b: ");
scanf("%d %d", &a, &b);//接收输入到变量a b
printf("max = ");
process(a, b, Max);//传递输入的参数a,b,和Max函数地址(函数名就是函数地址),注意你原来的max是小写的和系统本身的冲突了
printf("min = ");
process(a, b, Min);
printf("sum = ");
process(a, b, Add);
system("pause");
return 0;
}
int Max(int x, int y)
{
int z;
if(x > y)
{
z = x;
}
else
{
z = y;
}
return z;
}
int Min(int x, int y)
{
int n = x;
if( x>y )
{
n = y;
}else
{
n=x;
}
return n;
}
int Add(int x, int y)
{
int sum;
sum = x + y;
return sum;
}
void process(int x, int y, int(fun)(int,int))
{
int Ret;
Ret = fun(x,y);//取出函数地址和函数参数并计算,结果保存到Ret
printf("%d\n", Ret);//打印结果
}
学习了,写的真好!!! /******
设一个函数PROCESS,在调用它的时候,每次实现不同的功能
输入A和B,第一次调用PROCESS时找出大的,
第二次找出小的,第三次求和
********/
#include <stdio.h>
void main()
{
int max(int, int);
int min(int, int);
int add(int, int);
void process(int x, int y, int(*fun)());
int a, b;
printf("enter a and b: ");
scanf("%d %d", &a, &b);
printf("max = ");
process(a, b, max);
printf("min = ");
process(a, b, min);
printf("sum = ");
process(a, b, add);
}
int max(int x, int y)
{
int z;
if(x > y)
{
z = x;
}
else
{
z = y;
}
return z;
}
int min(int x, int y)
{
int n = x;
if( x>y )
{
n = y;
}
return n;
}
int add(int x, int y)
{
int sum;
sum = x + y;
return sum;
}
//加上这个行数定义
void process(int x, int y, int(*fun)())
{
printf("%d\n",((int(*)(int,int))fun)(x,y));
}
你的process函数呢? 你都要return,怎么能用void main呢要用int main! 15201315716 发表于 2014-4-25 16:53 static/image/common/back.gif
你都要return,怎么能用void main呢要用int main!
好吧,不过经过以上大神们修改,VOID MAIN也运行无误哦{:7_148:} qq小小七 发表于 2014-4-25 16:11 static/image/common/back.gif
你的process函数呢?
在没看到以上大神们的指点之前,偶还不会写PROCESS的内容{:7_181:}
只是总觉得少了点什么{:7_166:},所以发贴求救咯 仰望天上的光 发表于 2014-4-24 12:01 static/image/common/back.gif
感谢大神指点,终于明白了,{:7_149:}
不过,很抱歉,事关在您出手之前,有machimilk大神已提供了正解,道义上得优先最佳TA的{:7_174:} 仰望天上的光 发表于 2014-4-24 12:01 static/image/common/back.gif
感谢大神指点,终于明白了,{:7_149:}不过,很抱歉,在您出手之前,有machimilk大神已提供了正解,
道义上得优最佳TA的{:7_174:}偶知道您不会介意的呵
machimilk 发表于 2014-4-23 22:45 static/image/common/back.gif
有几个错误 给你修改了一下
感谢大神指点,又学习了{:7_172:}
不过,以下有异意请看“//....”
int Min(int x, int y)
{
int n = x; //初始赋值,n=x,假设x最小,
if( x>y )
{
n = y;
}else //整个else省略也可以正确运行哦{:5_109:}
{
n=x;
}
return n;
} 本帖最后由 machimilk 于 2014-4-25 23:10 编辑
欣欣celin 发表于 2014-4-25 22:34 static/image/common/back.gif
感谢大神指点,又学习了
不过,以下有异意请看“//....”
int Min(int x, int y)
其实我们这么写都有bug,试想输入2个一样的值,会返回什么,当然我们暂时不考虑2个一样的值,你初始的n等于x 如果y比x小就返回y这样可以省略x的,你注释的else是可以省略的,如果你还想更省也可以这样写
int Max(int x, int y)
{
return x>y?x:y;
}
int Min(int x, int y)
{
return x<y?x:y;
}
void main()这样写在vc windows下没问题,但是在其他操作系统下面就会产生错误,为了保持良好的习惯还是用 int main吧 machimilk 发表于 2014-4-25 23:08 static/image/common/back.gif
其实我们这么写都有bug,试想输入2个一样的值,会返回什么,当然我们暂时不考虑2个一样的值,你初始的n ...
原来如此,学问真是挖出来的呀,谢谢哦{:7_148:}:handshake C++数组 学号 成绩{{“01”,81},{“02”,65},{“03”,79},{“04”,65}},怎么 排列啊?按升幂降幂都行,学号 也一定跟着出来, 我自己只能实现成绩 排序, 实现不了 字符型数组学号的排列, :sweat: 云计算 发表于 2014-4-28 16:04 static/image/common/back.gif
C++数组 学号 成绩{{“01”,81},{“02”,65},{“03”,79},{“04”,65}},怎么 排列啊?按升幂降幂都 ...
哥们,偶还很菜,刚学C,还没学过C++和其它语言,这个问题我去帮你悬赏,找救兵吧,{:7_168:} 欣欣celin 发表于 2014-4-28 23:06 static/image/common/back.gif
哥们,偶还很菜,刚学C,还没学过C++和其它语言,这个问题我去帮你悬赏,找救兵吧,
已悬赏如下,过两天去看看是否有解答吧{:7_168:}
http://bbs.fishc.com/forum.php?mod=viewthread&tid=46483&extra= 你只是没有把自己定义的函数声明,所以main不认识,你只要把自己定义的函数放到main前面就不会出错了 欣欣celin 发表于 2014-4-28 23:12 static/image/common/back.gif
已悬赏如下,过两天去看看是否有解答吧
http://bbs.fishc.com/forum.php?mod=viewthread&tid=4 ...
兄弟我级别低 无权限访问啊我Q 767921536 云计算 发表于 2014-4-29 21:50 static/image/common/back.gif
兄弟我级别低 无权限访问啊我Q 767921536
哥们,偶不用Q好久了,自从被盗后,就没再用了,
要不你试试这么干,
http://fishc.com/dvd/vip.html
要不,有答案之后再转贴到这,给你看,好不? 欣欣celin 发表于 2014-4-29 22:00 static/image/common/back.gif
哥们,偶不用Q好久了,自从被盗后,就没再用了,
要不你试试这么干,
我论坛也加不了你好友要不你加下我~
页:
[1]
2