所以我需要将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
并且4
是chanNum
,您可以这样想:DTimeSigBuf[1] = new double[4];