OpenEdv-开源电子网

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

求助,函数指针的问题,求大佬解惑。

[复制链接]

1

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-2-22
在线时间
4 小时
发表于 2022-7-25 13:54:29 | 显示全部楼层 |阅读模式
int Test(int x, int y)
{
    if (x > y)
    {
        return x-y;
    }
    else
    {
        return y-x;
    }
}
int main(void)
{                        
  int(*p)(int, int);  //定义一个指针函数
  int a=12,b=20,c=0;
  p = Test;//指针函数指向Test函数
  c = (*p)(a, b); //通过指针函数调用指向的函数Test
  printf("c=%d",c);        
  while(1);
}

在这段代码中,c=(*p)(a,b)和c=p(a,b),有什么区别呢,输出结果是一样的,求大佬指点

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

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-7-26 15:14:34 | 显示全部楼层
515599248 发表于 2022-7-26 14:20
可以啊,输出结果都相同的。

试了下,的确能编译通过,看了下汇编代码,加*与不加*是一样的,同样感觉疑惑,
也有人讨论过这个问题.
https://www.zhihu.com/question/421214887
https://blog.csdn.net/yuzhiyong139/article/details/45071775
专治疑难杂症
回复 支持 1 反对 0

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-7-25 15:17:49 | 显示全部楼层
c=p(a,b) 能编译通过?
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-2-22
在线时间
4 小时
 楼主| 发表于 2022-7-26 14:20:14 | 显示全部楼层
LcwSwust 发表于 2022-7-25 15:17
c=p(a,b) 能编译通过?

可以啊,输出结果都相同的。
回复 支持 反对

使用道具 举报

8

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
789
金钱
789
注册时间
2019-8-15
在线时间
423 小时
发表于 2022-7-26 15:08:45 | 显示全部楼层
等答案,我一直用的后面一种,纠正一下,程序中注释中的指针函数,全部应该修改为函数指针
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-2-22
在线时间
4 小时
 楼主| 发表于 2022-7-26 15:28:25 | 显示全部楼层
LcwSwust 发表于 2022-7-26 15:14
试了下,的确能编译通过,看了下汇编代码,加*与不加*是一样的,同样感觉疑惑,
也有人讨论过这个问题.
http ...

感谢分享!
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-2-22
在线时间
4 小时
 楼主| 发表于 2022-7-26 15:28:48 | 显示全部楼层
鲸鱼niko 发表于 2022-7-26 15:08
等答案,我一直用的后面一种,纠正一下,程序中注释中的指针函数,全部应该修改为函数指针

下面大佬分享了网页,可以看看。
回复 支持 反对

使用道具 举报

8

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
789
金钱
789
注册时间
2019-8-15
在线时间
423 小时
发表于 2022-7-26 15:37:21 | 显示全部楼层
又试了一下,如果不嫌麻烦,甚至可以在调用函数的时候,把函数名当作函数指针,给函数名加星号,调用的结果也是一致的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 13:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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