malloc前面的(双**)是什么意思?

use*_*659 3 c++

例如在这段代码中:

double **Data, *DataT;
Data = (double **)malloc(3*sizeof(double *)+3*12*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

我刚刚读到malloc从堆中分配内存.但我找不到那个(双**)在malloc面前的含义.在此之后还有一行代码,我已经看过了.

for (i = 0, DataT = (double *)(Data+3); i < 3; i++, DataT += 12)
Run Code Online (Sandbox Code Playgroud)

这里有一个(double*)在Data + 3前面

你能告诉我这是做什么的吗?谢谢

Sta*_*asM 5

malloc()返回类型void *,而您的指针是类型double *double **.malloc之前的运算符 - 看起来像(类型) - 是类型转换运算符,需要将malloc的返回值转换为您正在使用的指针类型.

  • @ user947659因为C++是[强类型](http://en.wikipedia.org/wiki/Strong_typing)所以它对涉及不同类型的操作有限制.因为在C++中没有从`void*`到`double**'的隐式转换,试图将`void*`分配给`double**'是语法错误. (3认同)