问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言函数调用类的问题,急求解释

发布网友 发布时间:2022-05-09 18:25

我来回答

4个回答

热心网友 时间:2023-10-12 13:40

void CallMyFun(FunType fp,int x);是一个包含函数指针的函数!
fp只是函数指针的名称,是 CallMyFun函数的形参,这个名称你可以随便取的
当调用CallMyFun(MyFun1,10);//假设调用此变量时,
fp指代的就是MyFun1函数,而MyFun1的参数哪里来?就是通过CallMyFun的第2个参数传递进来的,这里是10
所以运行CallMyFun(MyFun1,10);函数,其实就是运行了call MyFun1(10)
所以运行CallMyFun(MyFun2,20);函数,其实就是运行了call MyFun2(20)
所以fp(x)指代的是一个函数,如果要输出他的结果,那在定义MyFun1,MyFun2时,函数就需要有返回值,而不能用void

热心网友 时间:2023-10-12 13:41

#include <stdio.h>
void MyFun1(int x);
void MyFun2(int x);
void MyFun3(int x);
typedef void (*FunType) (int );// 定义一个函数指针类型FunType,与下面定义函数的类型一致
void CallMyFun(FunType fp,int x);//函数从这开始调用
int main(int argc, char* argv[])
{
CallMyFun(MyFun1,10);//假设调用此变量
CallMyFun(MyFun2,20);
CallMyFun(MyFun3,30);
return 0;
}

void CallMyFun(FunType fp,int x)//进入函数FunType fp

fp(x); //fp(x); fp是什么意思,还有什么叫做通过fp的指针执

/*解释如下:
1、fp是函数指针,因为它是函数指针类型FunType指针变量。
2、在执行CallMyFun函数时,实参MyFun1把函数地址(函数名就是函数的首地址)传递给函数指针fp,实参10传递给x,
那么,fp=MyFun1了,即函数指针fp就指向了函数MyFun1;x=10了。
3、fp(x),通过函数指针fp执行函数MyFun1,<==>执行MyFun1(x);语句,这里可以通过函数指针来执行该函数,是因为该
函数指针fp执行了MyFun1()函数,这是一种间接的方式来调用函数。
4、执行fp(x);语句,那么就转去执行MyFun1()函数了,将实参x=10传递给MyFun1()函数的形参x,这两个参数虽然同名,但是
在不同的内存单元里,然后打印出: 函数MyFun1中输出: 10。
5、MyFun2、MyFun3同上面的道理是一样,就不再累赘了。
*/

} //行传递进来的函数,注意fp所指的函数是有一个参数的
void MyFun1(int x)// 这是一个有参数的函数,以下两个函数也相同。//fp的参数,参数在哪
{
printf("函数MyFun1中输出: %d\n",x);//如何最后将变量fp(x)输出
}
void MyFun2(int x)
{
printf("函数MyFun2中输出: %d\n",x);
}
void MyFun3(int x)
{
printf("函数MyFun3中输出: %d\n",x);
}

热心网友 时间:2023-10-12 13:41

CallMyFun(FunType fp,int x)这是一个“高阶函数”,它的第一个参数fp是一个函数,第二个参数x是第一个参数的参数,fp(x)就是把第一个参数fp当做一个函数调用,并且将x作为它的参数传递。

热心网友 时间:2023-10-12 13:42

void CallMyFun(FunType fp,int x)//进入函数FunType fp
{
fp(x); //fp(x); fp是什么意思,还有什么叫做通过fp的指针执
} //行传递进来的函数,注意fp所指的函数是有一个参数的
解释:函数CallMyFun(FunType fp,int x)有两个参数
第一个参数:FunType fp; 为函数指针
第二个参数:int x; 为一个整形数,用于传递给函数指针fp
比如:CallMyFun(MyFun1,10);//假设调用此变量
就是调用函数MyFun1,并且在CallMyFun中把10作为参数传递给MyFun1
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 如果公司借壳上市,那原公司会停盘吗,如果一直持有那个公司的股票呢... 在C语言中使用的词汇分为几类,分别为哪些? 如何完全使用C语言实现C++中的类,及其继承等性质 关于C语言中,类的功能,定义和使用方法 快手上有人评论说你作品有奥利给是什么意思? 求Ps大神把这张再改改,把大腿和小腿p细 腿p100厘米的长腿,把显胖的地方去掉(有红线的地方) 注册支付宝账号时显示系统繁忙,快捷支付开通失败是什么原因? 为什么注册支付宝老是失败? 我在win7上运行《帝国时代2》,为什么屏幕是花的,该怎么解决? 被限制登录是什么原因 Win7 上玩帝国时代2怎样解决花屏问题? 梦见老公给我买白金戒指我带在小指上了? 有撒好听的英文歌啊? 谁能给我来点英文歌 公路路肩的宽度,有什么要求。 英文翻译陕西省西安市未央区北二环东段珠江新城摩卡9号102 高速公路“最内侧车道”是左边还是右边? 求中国景点名称的正宗英文翻译,高手,专家进 高速公路紧急停车带到底是隔段距离设置一个,还是一直位于高速公路右侧 路肩 图片? 高速公路路肩是什么 .有什么软件能将录音改变成其他音调的吗? 老师给了我一个邮箱号码,让我把文件发给他,我该怎么做?我是手机上的。 怎样检查安全帽使用年限 害加一个偏旁组成一个新字? 害加部首变成新字 害字加偏旁? 害加偏旁 以害做偏旁的字有哪些 害换个偏旁是什么字 人侍人什么用害加偏旁? 害-()+()=() 就是去掉偏旁再加上 组个新字 组-(左边)+ (虫)=蛆 4-羟基-DL-色氨酸的韩国海关编码是什么? NBA球星克里-巴里出生于哪一年 火箭队1号是谁啊 游侠网-太阁立志传5 8/5=()/45=24/() X的平方-18X+77=0怎么解啊 被限制登录了该怎么办? 口袋怪兽蓝宝石金手指代码??? 你好 你那宏碁4750g笔记本电池没电怎么解决的