OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2751|回复: 5

c语言函数指针的问题关于函数调用

[复制链接]

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-29
在线时间
16 小时
发表于 2020-4-11 22:06:46 | 显示全部楼层 |阅读模式
5金钱
请教一个c语言函数指针问题,程序中注释标号1,2,3行的代码都可以实现函数调用。按理说不是1才可以的嘛,为什么2,3也可以实现(特别是2很奇怪),还望各位大佬指点。程序在VC++6.0和GCC上都有测试,没有错误也没有警告。keil5也是一样。

程序

程序

调试窗口

调试窗口
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2017-9-16
在线时间
80 小时
发表于 2020-4-12 21:54:19 来自手机 | 显示全部楼层
注意一下函数调用与解引用发生的次序,因为函数返回了可解引用的值(解引用后类型为char)
回复

使用道具 举报

7

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2017-9-16
在线时间
80 小时
发表于 2020-4-12 21:56:47 来自手机 | 显示全部楼层
另外C的函数不是first class,导致把函数作为参数传递时会出现退化为函数指针的现象,而函数指针比较特殊,它的行为和函数很相似
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
859
金钱
859
注册时间
2015-2-12
在线时间
353 小时
发表于 2020-4-13 09:41:22 | 显示全部楼层
对你问题感兴趣,同时自习也想学习学习。
百度知识:
1、(*pf)("fun") 和 pf("fun") 这两种形式是等价的,都是为ANSI C所接受的。https://blog.csdn.net/qq_32220231/article/details/52694724
2、*pf("fun") 这种形式,我还没有查到,继续努力中。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 04:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表