【发布时间】:2018-05-04 09:57:40
【问题描述】:
在 C 入门课程中(在一所工程大学),我们被要求识别一个带有 int (*(*f[5])(void))[10]; 行的指针的声明。
我目前对声明的理解是“一个包含 10 个函数指针的数组,每个函数指针返回一个 int 指针并且不带任何参数”。
有人可以确认我对声明的理解,并告诉我这样的定义在实践中是否有用吗?
【问题讨论】:
-
我建议你关注the clockwise spiral rule。从变量(在您的情况下为
f)开始并向外。 -
cdecl.org 也可能有帮助。
-
实际上,没有多少 C 程序员知道这个声明的含义。如果他们需要像这样复杂的东西,他们会使用 typedef 使其更具可读性。
-
这是一个典型的学习 C 声明如何工作的学校作业。当你学会了这一点时,你也学会了永远不要这样做。除了可能在 4 月 1 日进行代码审查。