所以我需要将C库转换成纯Java,目前看来很不错,但我还是停留在这里。
有人能给我解释一下下面的指针是干什么用的吗?

double *DTimeSigBuf[MAX_TIME_CHANNELS];

好的,我知道它是一个名为dtimesigbuf的双类型指针,但是括号里是什么?此外,h文件中的max_time_channels定义为:
 #define MAX_TIME_CHANNELS 2

然后在代码中,这个常量值会改变,就像它指向其他地方一样,但我不知道确切的意思是什么。它等于说:
double *DTimeSigBuf = MAX_TIME_CHANNELS;

如果我记得在汇编程序中有类似的东西,比如:mov [BX], CL称为间接寻址模式寄存器,这与此有什么关系吗?我知道我可能完全迷路了!因为正如标题所说,我是一个Java程序员。
另一个问题,这样做的效果是什么:
DTimeSigBuf[chanNum]            = (double*)malloc(block_size_samples*sizeof(double));

其中block_size_samples是int,channum是for迭代器变量?
请帮助!我发誓我一直在用谷歌搜索。
谢谢各位:)

最佳答案

DTimeSigBuf是指向类型double的指针数组。这可以看作是double类型的数组数组。

double *DTimeSigBuf[MAX_TIME_CHANNELS];

可以认为是
double DTimeSigBuf[MAX_TIME_CHANNELS][]

那行
DTimeSigBuf[chanNum] = (double*)malloc(block_size_samples*sizeof(double));

正在为要放置在block_size_samples指向的数组中的double类型的变量数分配内存。
例如:
如果DTimeSigBuf[chanNum]block_size_samples并且4chanNum,您可以这样想:
DTimeSigBuf[1] = new double[4];

07-26 00:35