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

C 语言中指针函数是如何调用的??

发布网友 发布时间:2022-05-13 22:49

我来回答

4个回答

热心网友 时间:2023-11-04 01:14

整个程序的目的是对一组数据进行求最大值、最小值或平均值的操作,通过输入的指令进行相应的操作。按照不用函数指针的思路,程序大概会写成这样:(以下为伪代码)
最大值函数{...}
最小值函数{...}
平均值函数{...}
main{
输入d,则调用 最大值函数
输入x,则调用 最小值函数
输入p,则调用平均值函数
}

不过可以发现如下几点:
· 三个函数的参数形式与返回值都是完全一样的
· 按上述方法写代码,每次调用都要写清楚参数,略显啰嗦

所以就使用函数指针来重新改写代码
GetOperation这个函数本身,就是根据输入指令找到对应的 操作函数并作为函数指针返回它,然后main里直接通过函数指针调用,调用代码只需要写一次,而且甚至不用关心这个函数指针代表的到底是哪个函数

这个程序里只有三个对数据的操作所以函数指针的优点不是很明显。假设有多大100种对数据的操作,如果不使用函数指针,就要不停地写if else if else if...,使用函数指针,甚至可以事先建立一个指令字符与操作函数指针的对应列表,运行时直接在列表里搜索抽取,代码就显得干净利索

GetOperation(c)(dbData,iSize)这句话的具体执行操作是:
(下面假设输入了c='d')
首先执行GetOperation('d'),该函数返回得到GetMax(的指针),再执行GetMax(bData,iSize),即对数据求最大值的操作,函数返回得到最大值

热心网友 时间:2023-11-04 01:14

函数参数用值传递时,函数的形参只不过是实参的拷贝而已。也就是说,1中调用swap函数时,内存中实际上a,b,x,y四个变量都存在,x是a的拷贝,y是b的拷贝,对x,y的值进行交换,a,b的值并未交换。

而2中用了指针传递,swap中的a,b,实际上是指向了main中的a,b。这个swap中交换的是a,b指向的变量的值,也就是交换了main中的a,b的值。
是否可以解决您的问题?

热心网友 时间:2023-11-04 01:15

第一条是自定义函数的结构;
c只是一个函数名,你那边应该还有几个函数吧,一个是求最大值的函数,一个是求最小值得函数,一个求平均值的函数,c输入的不同,所调用的函数也不同,所以返回值也不同了。
你这个函数是通过函数来调用其他函数,嵌套式的调用。
先调用GetOperation(C)这个函数,再调用C(dbData,iSize)。
这个可以节省空间和程序计算的时间,如果再加一个循环话会更强大。
(本人只学了C语言(大二学生),很多用词还不标准,请见谅)
ps:那个void只对Getoperation(C)这个函数生效。
ps:由于*PF是指针,函数里面的c是一个指针,我个人觉得,main函数里面的c应该改为&c。
GetOperation(C)这句应该改为GetOperation(&c);
PS:望给点幸苦分。

热心网友 时间:2023-11-04 01:15

你确定这些代码通过编译了?我咋不知道C语言函数后面还能跟俩括号?还是说这只是代码的一部分?追问这只是代码的一部分。

追答我告诉你:我学了几个月的C真不知道函数后面能加俩括号,C++好像也不行.你这如果能通过编译,那代码开关一定有宏,如果有,就把宏也给贴出来啊,你不贴出来你让谁帮你啊.还有.如果没通过编译.我就这告诉你是咋调用的:
这个不是printf调用的你那个函数.C标准规定:在函数传参前,必须把各个参数运算完毕.所以说起来不是printf调用的它,是main调用的它.咋调用的是这样的:
下面是内存:(*号是printf,`(点)是main,^是你的那个函数)
``````````` ^^^^^^^^^^^^^^^
************

程序先在`中运行.然后发现了有printf,但参数中要运算,就跳到^^^^^^中,当^执行完后,会有一个返回值,然后一直传进*中.最后执行*中的代码.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么把苹果电脑安装到固态硬盘苹果笔记本可以换成固态硬盘吗_百度知 ... 营转非的车保险和私车一样吗? 功夫不负有心人的观点怎么写 用具体事实说明一个观点比如“功夫不负有心人”“虚心使人进步骄傲使... 我左腿膝盖向上10cm外侧刚发现有个硬的包很疼,表面无异样请问是什么`昨 ... 左腿膝盖外侧酸是怎么回事,右腿没感觉,是缺少什么了吗,以前一般吃几天... 膝盖处外侧皮肤麻木,皮肤容易红,外侧摸关节处略大于右腿同部位关节。去... 灰色冬裙配什么短外套 2024年信用卡诈骗罪是什么样的量刑标准 徐州启星中学好不好在徐州排第几徐州启星中学 指向函数的指针怎么使用 指向函数的指针的用法? 函数指针(指向函数的指针) 如何使用? 它和回调函数有什么区别呢? c++的函数指针是怎么用的呀? 360贷四万块,一年交利息是多少? 网页打开的速度慢原因? 怎么用jquery实现菜单的联动 函数指针的几种用法 你们觉得刚开始喝普洱茶,是喝生普好还是熟普好呢? 华为p20 pro可以用beats studio3吗 两条腿疼,好像肌肉酸痛。站一会就感觉累怎么回事啊 美甲顺序是什么呢? 今日头条,标题用场标题好,还是短标题好。 头条号标题怎么写? 含有草字的常见诗句? 《某某》是真的绝版了吗? 洛天依的《某某》的歌词 太保人寿是什么内容 太保人寿是太平人寿么 太保人寿是什么?热 如何调用指针函数 带指针的函数怎么调用? 工控机里auo代表什么 c语言函数指针怎么用啊?尤其是main函数 c++课程设计 电影院自动售票机 友达AUOA48F和奇美CMN14D5屏幕哪个好 auo12303故障 auo能拼出多少个音节? AUO全称? Auo在运放电路中是什么意思 直接压榨出来的花生油可以直接使用吗?还是需要添加一些什么东西? 为什么叫金闪闪auo? 玉米油怎么用?和花生油还是豆油一样? 友达AUO13ed是什么样的屏幕,13ed代表什么? ag80环氧树脂在室温下多久凝固 氟塑料是否属于热固性树脂 沙迪克g90g59g97什么意思??? 用AG80改性氰酸脂生产高强度的复合材料.但AG80太贵.想能代替AG80而成本较低的其他树脂.请朋友们帮忙,谢谢 环氧树脂凝固后有什么简便方式可以除浇 什么是碳纤维复合芯电缆