加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C函数指针调用语法

发布时间:2020-12-16 10:20:55 所属栏目:百科 来源:网络整理
导读:假设有一个函数指针: void func(float a1,float a2) {}void (*fptr)(float,float) = func; 这两行之间是否有任何区别(编译和编译工作)? (*fptr)(1,2);fptr(1,2); 我想第二个版本只是第一个版本的捷径,但我想确保自己.更重要的是标准行为? 解决方法 他们做
假设有一个函数指针:

void func(float a1,float a2) {

}

void (*fptr)(float,float) = &func;

这两行之间是否有任何区别(编译和编译工作)?

(*fptr)(1,2);
fptr(1,2);

我想第二个版本只是第一个版本的捷径,但我想确保自己.更重要的是标准行为?

解决方法

他们做同样的事情.

函数调用的前缀始终是指向函数类型的表达式.

指针类型的表达式,例如声明的函数的名称.隐式转换为指向该函数的指针,除非它是一元“&”的操作数. (无论如何产生函数的地址)或sizeof(这是非法的,而不是产生指针的大小).

这条规则的结果是所有这些:

&func
func
*func
**func

是等价的.它们都评估函数的地址,并且它们都可以(如果适当地括号括起)用作函数调用的前缀.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读