诛仙全本精校txt:(c语言)“函数的返回值”是“函数的地址”的用法
来源:百度文库 编辑:中科新闻网 时间:2024/07/07 08:50:18
#include <stdio.h>
void fun1(void)
{
printf("I am fun1 !\n");
}
void (*f())(void)
{
printf("I an fun2 !\n");
}
main()
{
f();
}
//这个函数不完整,编译器提示缺少返回值
//但我不知道怎么返回,书上也没有例子
函数f()的返回值是一个函数的地址,
但有什么用呢?
想了好久,想不出例子,
是不是当函数f()返回时,会自动调用一个函数?
能帮我举个例子吗?谢谢·
void fun1(void)
{
printf("I am fun1 !\n");
}
void (*f())(void)
{
printf("I an fun2 !\n");
}
main()
{
f();
}
//这个函数不完整,编译器提示缺少返回值
//但我不知道怎么返回,书上也没有例子
函数f()的返回值是一个函数的地址,
但有什么用呢?
想了好久,想不出例子,
是不是当函数f()返回时,会自动调用一个函数?
能帮我举个例子吗?谢谢·
给你一个例子,是谭浩强的C语言程序设计P.199.页的一个例子:你可以找该书来参考:
------------------------------
/*使用指向函数的指针*/
#include <stdio.h>
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 z;
if(x<y){
z=x;
}else{
z=y;
}
return z;
}
int add(int x,int y)
{
int z;
z=x+y;
return z;
}
/*第三个参数为指向返回值为整型的函数的指针*/
int process(int x,int y,int(*fun)())
{
int result;
result=(*fun)(x,y);
printf("[%d]\n",result);
}
int main(void)
{
int a,b;
printf("输入两个整数:\n");
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
printf("大的数为:");
process(a,b,max);
printf("小的数为:");
process(a,b,min);
printf("和为:");
process(a,b,add);
return 0;
}