【发布时间】:2013-05-01 08:10:41
【问题描述】:
来自§6.2.7.5(第 66 页):
示例给定以下两个文件范围声明:
int f(int (*)(), double (*)[3]); int f(int (*)(char *), double (*)[]);函数的结果复合类型是:
int f(int (*)(char *), double (*)[3]);
在上面的例子中,他们解释了复合类型是一种类型,兼容两种不同的类型。我会直观地将“复合类型”这个短语理解为“结构和联合”的意思,这似乎偏离了目标。
什么是 C 中的复合类型,它的用途是什么?有人可以详细解释一下上面的例子吗?
【问题讨论】:
-
我想你的意思是§6.2.7?
-
您是否考虑过向上滚动到该示例 (6.2.7/3) 上方的文本,其中令人惊讶的是,其中声明了复合类型的定义?
-
说复合类型是两种类型统一的结果有用吗?
-
@TonyTheLion 不,
double (*)[3]是一个指向 3 个数组的指针double。 -
@TonyTheLion 不,不是,它是一个指向具有 3 个元素的双精度数组的数组指针
标签: c language-lawyer c11