gpt4 book ai didi

c - 找出像 : double (*b)[n] 这样的 C 声明

转载 作者:太空狗 更新时间:2023-10-29 16:32:06 25 4
gpt4 key购买 nike

我正在尝试找出一些 C 声明。这些 C 声明的含义是什么?

double (*b)[n];
double (*c[n])();
double (*d())[n];

最佳答案

double (*b)[n];

b 是指向 n 个 double 组的指针

double (*c[n])();

c 是一个数组,包含 n 个指向函数的指针,这些函数采用未指定数量的参数并返回 double

double (*d())[n];

d 是一个函数,它接受未指定数量的参数并返回指向 n 个 double 组的指针

一般来说,为了在头脑中解析这些类型的声明,请采用以下方法。让我们看看最后的声明,例如

 double (*d())[n];

对 d 做的第一件事是什么?它是用 () 调用的,因此 它是一个接受未指定数量的参数并返回的函数... 对结果做了什么?它被取消引用 (*),因此它是指向 的指针。然后对结果进行索引,因此它是n 的数组...还剩下什么?双重,因此是双重。阅读粗体部分,您会得到答案。

再看一个例子

 void (*(*f)(int)[n])(char)

在这里,f 被 首先取消引用,因此它是一个指向 的指针......然后用 (int) 调用它,因此一个函数获取 int 并返回 ,然后用 [n] 对结果进行索引,因此 n 的数组。结果再次被取消引用,因此指向。然后结果由 (char) 调用,所以 functions 接受 char 并返回(剩下的都是 void)void。所以 f 是一个指向一个函数的指针,该函数接受 int 并返回一个数组,其中 n 个指针指向接受 char 并返回 void 的函数

HTH

关于c - 找出像 : double (*b)[n] 这样的 C 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com