首页 > 解决方案 > 为什么我可以为函数指针分配对函数的引用和函数本身?

问题描述

我试图理解 C 中的函数指针。

我已经定义了这种类型:

typedef int (*bin_op_ptr)(int, int);

我认为它应该是一个指向带有两个int参数并返回一个函数的指针int

然后我用这个原型定义了一个简单的函数:

int min(int a, int b);

我注意到我可以同时做这两个

bin_op_ptr min_ptr1 = min;bin_op_ptr max_ptr2 = &min;

我有点迷路了。

为什么可以同时分配min和引用min具有相同类型的变量?

如果我有一个指向整数的指针,我只能分配对整数的引用,而不是整数本身。

我对 C 函数指针的工作方式有什么误解吗?

标签: cpointersfunction-pointers

解决方案


这几乎是这个问题的完全重复

答案是函数可以根据规范隐式转换为函数指针(类似于数组到指针衰减)。


推荐阅读