首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >int (*cmp)(void)和int *cmp(void)有什么区别?

int (*cmp)(void)和int *cmp(void)有什么区别?
EN

Stack Overflow用户
提问于 2020-02-28 19:42:40
回答 2查看 102关注 0票数 4

它们之间的区别是什么

代码语言:javascript
复制
extern int (*func)(void);

代码语言:javascript
复制
extern int *func(void);

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-02-28 19:44:19

代码语言:javascript
复制
extern int (*func)(void);

func声明为指向不带参数并返回int值的函数的指针。

代码语言:javascript
复制
extern int *func(void);

是转发声明(也称为func的一个函数,它不接受任何参数并返回一个指向int的指针。

第一个声明一个变量,第二个声明一个函数。

票数 7
EN

Stack Overflow用户

发布于 2020-02-28 19:52:11

如果您将类型fp声明为指向函数的指针,则编译器会将fp()解释为取消对fp的引用以获取函数的地址。

然而,如果fp被声明为函数本身,那么文件中的任何fp()都将被编译器解释为一个接近调用的 fp的地址。

这意味着,链接器将把跳转修复为调用者地址和fp 本身的地址之间的偏移量。

不是位于fp的地址,而是偏移量to fp

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60451013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档