在一个项目中,有人推动了这条线:
double (*e)[n+1] = malloc((n+1) * sizeof(*e));
它假设创建了一个由(n+1)*(n+1)双精度数组成的二维数组。
我之所以这么说,是因为到目前为止,我问过的人都不能确切地告诉我这是做什么的,也没有人能告诉我它是从哪里来的,或者为什么它应该起作用(据说它确实起作用了,但我还不相信它)。
也许我漏掉了一些明显的东西,但如果有人能给我解释一下上面这行,我会很感激的。因为就我个人而言,如果我们使用一些我们真正理解的东西,我会感觉更好。
发布于 2016-04-22 20:51:56
变量e
是指向double
类型的n + 1
元素数组的指针。
在e
上使用解引用操作符可以得到e
的基本类型,即“double
类型的n + 1
元素数组”。
malloc
调用只获取e
的基本类型(如上所述)并获取其大小,将其乘以n + 1
,然后将该大小传递给malloc
函数。本质上是分配double
的n + 1
元素的n + 1
数组的数组。
https://stackoverflow.com/questions/36794202
复制相似问题