Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >高难度函数声明 int (*(*pf( )) ( ) ) ( ) 了解一下?

高难度函数声明 int (*(*pf( )) ( ) ) ( ) 了解一下?

作者头像
Power7089
发布于 2020-07-26 12:18:58
发布于 2020-07-26 12:18:58
4560
举报

各位,当你看到上面的函数声明int (*(*pf( )) ( )) ( )时是不是头都大了?那它究竟表示的是什么意思呢?今天我们就拿它分析一下。

关于这种复杂声明,在分析之前有两点原则:

1.要确定声明中出现的操作符的优先级,

2.要确定在声明中标识符与某个操作符结合起来的时候有什么意义,并由内向外逐步来解读.

还有一点需要大家特别注意的:当指针解引用操作符*与一个表示函数的标识符结合时,表示这个函数的返回值是一个指针。例如 *a() 表示a是一个返回值为指针的函数。

有了以上几点说明,那我们就开始吧:

怎么样,到这里应该很清楚了吧,所以说见到这种复杂冗长的声明不要怕麻烦,由内到外一步一步分析,到最后你会发现不过如此,希望对大家有所帮助,感谢耐心阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员阿甘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
计算机初级选手的成长历程——指针(7)
在结束了数组指针的学习后,我相信大家对指针与数组的内容应该有了更进一步的认识了。现在C语言的指针和数组的组合我们已经介绍的差不多了,还有一个知识点我们还没有开始介绍——函数。既然数组在内存空间中有自己的地址,并且能够被指针指向,那对于函数来说,它在创建函数栈帧的时候也是有地址的,那它的地址可不可以被指针指向呢?这就是我们今天要探讨的内容——函数指针。
蒙奇D索隆
2023/12/18
1680
计算机初级选手的成长历程——指针(7)
C++经典面试题(最全,面中率最高)
delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
诸葛青云
2019/06/21
2.4K0
C++经典面试题(最全,面中率最高)
重读《c primer plus》发现了99%的人都会忽略的知识点之声明和初始化
在编译器中,long 和 int 都是 32 位的,当需要定义一个32位的变量时,用 long,不要用 int。
心跳包
2021/09/26
5340
【C++】泛型编程 ⑬ ( 类模板示例 - 数组类模板 | 构造函数和析构函数 的 声明与实现 | 普通成员函数 的 声明与实现 | 外部友元函数 的 声明与实现 )
本篇博客中 开始 使用 类模板 开发一个 数组类 , 数组 中 可以维护 不同类型的 元素数据 , 如 : int , char , 自定义类 ;
韩曙亮
2023/11/24
6870
【C++】泛型编程 ⑬ ( 类模板示例 - 数组类模板 | 构造函数和析构函数 的 声明与实现 | 普通成员函数 的 声明与实现 | 外部友元函数 的 声明与实现 )
【笔记】《C++Primer》—— 第一部分:C++基础
说好的总结就是这个了,基本上就是再回看了下之前的7篇笔记并且重新翻翻书梳理了一下,也在此每小节补上了一开始没写的小标题。这篇写起来还是比较轻松的,基本都是从前面的章节复制来的,长度较长,不熟悉的话看起来可能不会很轻松。
ZifengHuang
2020/07/29
1.6K2
JS中函数声明与函数表达式的异同
相同点 注:函数声明和函数表达式的相同点包括但不限于以下几点 函数是一个值,所以和其他值一样,函数也可以进行被输出、被赋值、作为参数传给其他函数等相关操作,不管函数是以什么方式被定义的,当然和其他值的输出还是有些区别的。 我们先来输出这个值: function nameAlert(name){ alert('博主的名字是:' + name + ' 。'); } alert(nameAlert); 注意输出的结果并不是1,而是这个函数的整个源代码,即输出结果为: function name
蓓蕾心晴
2018/04/12
1.2K0
结构体定义 typedef struct 用法详解和用法小结
typedef可以声明新的类型名来代替已有的类型名,但却不能增加新的类型。   typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。   在编程中使用typedef目的一般有两个,一个是给变量提供一个易记且意义明确的新名字(类型有新别名,方便变量的定义),另一个是简化一些比较复杂的类型声明。
Twcat_tree
2022/11/30
1.4K0
javascript中函数声明和函数表达式浅析
记得在面试腾讯实习生的时候,面试官问了我这样一道问题。 //下述两种声明方式有什么不同 function foo(){}; var bar = function foo(){};  当初只知道两种声明方式一个是函数声明一个是函数表达式,具体有什么不同没能说得很好。最近正好看到这方面的书籍,就想好好总结一番。 在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者使用函数声明。对此,ECMAScript规范明确了一点,即是,即函数声明 必须始终带有一个标识符(Identifier)
Sb_Coco
2018/05/28
9702
C++雾中风景番外篇:理解C++的复杂声明与声明解析
在编写C/C++代码时偶尔能看到如下的复杂声明:float(*(*e[10])(int*))[5]。我想你的第一反应一定是:MMP。虽然我们在实际工作之中是很少出现这种极其复杂的声明逻辑,同时也不提倡使用这样的声明。但是学会理解和解析这类复杂的声明逻辑,可以更好的理解C/C++之中诸个关键词是如何进行组织,来表达逻辑的,也能更好的理解各个关键词的使用方式。
HappenLee
2018/10/10
6790
C++雾中风景番外篇:理解C++的复杂声明与声明解析
JavaScript 高级程序设计(第 4 版)- 函数
函数实际上是对象。每个函数都是Function类型的实例,Function也有属性和方法。函数名就是指向函数对象的指针。 # 箭头函数 只有一个参数可以不用括号,只有没有参数、或多个参数的情况下,才需要使用括号 箭头函数可以不用大括号,会隐式返回箭头后面那行代码的值 箭头函数不能使用arguments、super和new.target,也不能作为构造函数 箭头函数没有prototype属性 # 函数名 函数名就是指向函数的指针 使用不带括号的函数名会访问函数指针,而不会执行函数 所有函数对象都会暴露一个只读
Cellinlab
2023/05/17
4030
JavaScript 高级程序设计(第 4 版)- 函数
JavaScript中eval和with语句如何影响作用域链:探索深度知识
沉浸式趣谈
2024/03/13
1460
JavaScript中eval和with语句如何影响作用域链:探索深度知识
JAVASCRIPT FUNCTIONS 详解
本文是@堂主 对《Pro JavaScript with Mootools》一书的第二章函数部分知识点讲解的翻译。该书的作者 Mark Joseph Obcena 是 Mootools 库的作者和目前开发团队的 Leader。虽然本篇文章实际译于 2012 年初,但个人感觉这部分对 Javascript 函数的基本知识、内部机制及 JavaScript 解析器的运行机制讲的非常明白,脉络也清楚,对初学者掌握 JavaScript 函数基础知识很有好处。尤其难得的是不同于其他 JavaScript书籍讲述的都是分散的知识点,这本书的知识讲解是有清晰脉络的,循序渐进。换句话说,这本书中的 JavaScript 知识是串起来的。
政采云前端团队
2019/12/20
7580
【C语言】看了这篇文章,如果你还不会文件操作的话,我把这篇文章给吃了(doge)
🚩write in front🚩    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~2021博客之星Top63~作者周榜84﹣作者总榜704~ 🆔本文由 謓泽 原创 CSDN首发🙉 如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 📣系列专栏-【C】系列_謓泽的博客-CSDN博客🎓 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 文件操作⇢目录 🚩wr
謓泽
2023/02/22
8530
【C语言】看了这篇文章,如果你还不会文件操作的话,我把这篇文章给吃了(doge)
【C语言程序设计——函数】编写子函数求x的n次方(头歌实践教学平台习题)【合集】
在 C 语言中,函数是一段可以重复使用的代码块,用于完成特定的任务。定义子函数的基本语法格式如下:
Rossy Yan
2025/01/01
950
【C语言程序设计——函数】编写子函数求x的n次方(头歌实践教学平台习题)【合集】
IIFE 立即执行函数表达式
IIFE全称为Immediately Invoked Function Express-立即执行函数(表达式),顾名思义,是在定义之后立即执行的函数。IIFE主要以保护变量范围著称,时候也会被称为“自执行的匿名函数”(self-executing anonymous function)。
泯泷、
2024/03/11
1490
《你不知道的JavaScript(上)之作用域》读书笔记
程序设计的概念:一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
after the rain
2022/08/08
5330
Go函数介绍与一等公民
函数对应的英文单词是 Function,Function 这个单词原本是功能、职责的意思。编程语言使用 Function 这个单词,表示将一个大问题分解后而形成的、若干具有特定功能或职责的小任务,可以说十分贴切。函数代表的小任务可以在一个程序中被多次使用,甚至可以在不同程序中被使用,因此函数的出现也提升了整个程序界代码复用的水平。
贾维斯Echo
2023/10/18
2140
Go函数介绍与一等公民
一篇文章带你了解JavaScript中的语法,数据类型,流程控制语句以及函数
JavaScript有多重要啊,才能让我说说一下,其中的语法,操作符,数据类型,内置功能等。
达达前端
2019/12/26
5730
一篇文章带你了解JavaScript中的语法,数据类型,流程控制语句以及函数
【熟视C语言】如何快速的了解一个库函数(C语言讲解,以string.h中的部分库函数为例)
C语言的库函数虽然不算多,但若能熟练掌握一部分,或者说能学会去了解库函数的使用,无论是对C语言的使用熟练程度还是自己代码能力的提升都是有帮助的。所以,本篇文章旨在向读者展示如何了解并熟练使用一个库函数,本篇文章以头文件string.h中的一部分库函数为例讲解。
Crrrush
2023/06/23
3640
【熟视C语言】如何快速的了解一个库函数(C语言讲解,以string.h中的部分库函数为例)
C语言函数大全--g开头的函数(下)
函数返回一个整数,该整数代表指定坐标 (x, y) 上像素的颜色编码。颜色编码的具体含义取决于你使用的图形库和当前的图形设置。在某些图形库中,这个整数可能直接代表一个RGB颜色值,其中不同的位或字节表示红色、绿色和蓝色通道的强度。在其他情况下,这个整数可能是一个索引值,指向当前调色板中的一个颜色条目。
huazie
2025/01/23
1470
C语言函数大全--g开头的函数(下)
推荐阅读
相关推荐
计算机初级选手的成长历程——指针(7)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档