来自java程序员的C编程问题

Ric*_*doE 4 c memory pointers allocation

所以我需要将C库翻译成纯java,到目前为止看起来很好,但我被困在这里.

有人可以向我解释以下指针的用途是什么?

double *DTimeSigBuf[MAX_TIME_CHANNELS];
Run Code Online (Sandbox Code Playgroud)

好吧,我知道它是一个名为DTimeSigBuf的双重类型指针,但在括号中是什么?同样MAX_TIME_CHANNELS在h文件中定义为:

 #define MAX_TIME_CHANNELS 2
Run Code Online (Sandbox Code Playgroud)

然后在代码中这个常量值会改变,就像它指向其他地方一样,但我不知道究竟意味着什么.它相当于说:

double *DTimeSigBuf = MAX_TIME_CHANNELS;
Run Code Online (Sandbox Code Playgroud)

如果我记得很清楚汇编程序中有类似的内容,例如:mov [BX], CL称为间接寻址模式寄存器,这与此有什么关系吗?我知道我可能完全迷失了!因为正如标题所说,我是一名java程序员.

另一个问题是,这样做的效果是什么:

DTimeSigBuf[chanNum]            = (double*)malloc(block_size_samples*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

block_size_samples是int,chanNum是迭代器变量吗?

请帮忙!我知道我一直在谷歌上搜索.

谢谢大家:)

pio*_*kuc 5

它是一个双精度指针数组.MAX_TIME_CHANNELS是数组的大小.

malloc语句的作用是为block_size_samples双值分配足够大的内存块; 然后将内存块的地址分配给DTimeSigBuf数组的chanNum元素.