C++怎么理解typedef int (*(*(fp()))) (int);

 我来答
阿藏聊教育
高能答主

2021-10-26 · 我是教育知识通,关注最新教育事
阿藏聊教育
采纳数:34 获赞数:13026

向TA提问 私信TA
展开全部

typedef int (*(*(fp()))) (int);可以化简为:typedef int(**fp()) (int)。

看int(**fp()) (int);  //fp是个函数,它返回个这样的玩意: int(**)(int) ,这是个指针,假设这个指针叫A,A又指向一个函数的指针B,B指向一个函数,该函数有一个int参数,返回一个int。

发展历程

世界上第一种计算机高级语言是诞生于1954年的FORTRAN语言。之后出现了多种计算机高级语言。1970年,AT&T的Bell实验室的D.Ritchie和K.Thompson共同发明了C语言。

研制C语言的初衷是用它编写UNIX系统程序,因此,它实际上是UNIX的“副产品”。它充分结合了汇编语言和高级语言的优点,高效而灵活,又容易移植。

1971年,瑞士联邦技术学院N.Wirth教授发明了Pascal语言。Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言

20世纪70年代中期,Bjarne Stroustrup在剑桥大学计算机中心工作。他使用过Simula和ALGOL,接触过C。他对Simula的类体系感受颇深,对ALGOL的结构也很有研究,深知运行效率的意义。既要编程简单、正确可靠,又要运行高效、可移植,是Bjarne Stroustrup的初衷。

以C为背景,以Simula思想为基础,正好符合他的设想。1979年,Bjame Sgoustrup到了Bell实验室,开始从事将C改良为带类的C(C with classes)的工作。1983年该语言被正式命名为C++。

自从C++被发明以来,它经历了3次主要的修订,每一次修订都为C++增加了新的特征并作了一些修改。

第一次修订是在1985年,第二次修订是在1990年,而第三次修订发生在c++的标准化过程中。在20世纪90年代早期,人们开始为C++建立一个标准,并成立了一个ANSI和ISO(International Standards Organization)国际标准化组织的联合标准化委员会。

该委员会在1994年1月25曰提出了第一个标准化草案。在这个草案中,委员会在保持Stroustrup最初定义的所有特征的同时,还增加了一些新的特征。

以上内容参考:百度百科-C++

庄政警
2019-07-17 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:890万
展开全部
因为“()”的优先级高于“*”,所以
typedef int (*(*(fp()))) (int);
可以化简为
typedef int(**fp()) (int);
看int(**fp()) (int); //fp是个函数,它返回个这样的玩意: int(**)(int) ,这是个指针,假设这个指针叫A,A又指向一个函数的指针B,B指向一个函数,该函数有一个int参数,返回一个int
fp就是返回一个A类型指针的函数
那么前面加个typedef则fp就被定义成一种类型了:fp就是一种能返回A类型指针的函数,A类型就是 int(**)(int)
给你个具体例子:
#include <iostream>
using namespace std;
int f(int a) { return 2*a;} //定义一个int(int)函数
typedef int(*(*(pf()))) (int);
pf k; //用上面的typedef类型声明函数k
int main()
{
cout<<(**k())(1234); //k返回一个函数的**, 则*k就是个函数的* ,**k就是个函数了
return 0;
}
int(**k())(int) //定义函数k
{
int(*pfi)(int) = f; //定义一个指针pfi,指向函数f
int(**ppf)(int)=&pfi; //定义一个指针ppf 指向pfi
return ppf; //返回这个指针
}
结果输出2468
更多追问追答
追问
我这么声明,gcc直接通不过编译,说是 函数的声明和变量一样?
追答

我用dev c++ 试了下 可以通过的  dev c++也是gcc编译器。

你整个复制我上面的试试

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式