首页 > 后端开发 > C++ > 正文

为什么C90中函数名可以用作函数指针?

Susan Sarandon
发布: 2024-11-12 03:22:02
原创
919 人浏览过

Why Can Function Names Be Used as Function Pointers in C90?

使用函数名称作为函数指针

C90 的基本原理文档提供了对将函数名称与函数指针等同的设计选择的深入了解。这种便利简化了在特定上下文中使用函数指针的过程。

函数声明

考虑声明:

int f();
int (*pf)();
登录后复制

函数调用

以下所有表示有效的函数调用:

(&f)();
f();
(*f)();
(**f)();
(***f)();

pf();
(*pf)();
(**pf)();
(***pf)();
登录后复制

每行的第一个表达式之前已介绍过。第二种是常规的。在大多数情况下,后续表达式意味着函数指示符隐式转换为指针值。

设计原理

委员会认为允许这些形式并查看没有明显的缺点将其视为过度努力而取缔。因此,函数指示符和函数指针之间的等价性为指针使用提供了便利。

隐式转换

另一个有趣的观察是使用时函数类型到指针的隐式转换作为参数但不作为返回类型:

typedef bool FunctionType(int);
void g(FunctionType); // Implicitly converts to void g(FunctionType *)
FunctionType h(); // Error
FunctionType *j(); // Returns a function pointer with the type bool(int)
登录后复制

以上是为什么C90中函数名可以用作函数指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板