【发布时间】:2015-04-11 03:32:17
【问题描述】:
我有一个示例C 程序我想了解。以下是源代码中的一个函数摘录:
double** Make2DDoubleArray(int arraySizeX, int arraySizeY)
{
double** theArray;
theArray = (double**) malloc(arraySizeX*sizeof(double*));
int i = 0;
for (i = 0; i < arraySizeX; i++)
theArray[i] = (double*) malloc(arraySizeY*sizeof(double));
return theArray;
}
我的问题是** 在返回类型中的意义是什么。我知道* 通常用作pointer。我知道它也可以用来dereference指针。
这让我觉得double** 是一个双精度值,因为它本质上是引用的取消引用。我的想法正确吗?如果没有,有人可以解释一下这个例子中** 的用法吗?
【问题讨论】:
-
指向指针的指针
-
首先您需要了解
pointer是什么并停止将其与reference混为一谈,然后您将知识扩展到pointer to pointer -
从右到左读取类型。
double **是“指向双精度指针的指针”。你写的,**double,没有意义:“双指向指针。”所以**double是无效的语法。 -
也许是因为这个问题可以通过阅读 C 书籍中关于指针的章节来回答。不过我没有投反对票。
-
@S.Morgenstern 所有问题都可以通过阅读正确的书来解决。得出不需要该站点的结论?我认为不是...
标签: c pointers memory reference dereference