所以我需要把一个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迭代器变量?
请帮帮我!我发誓我一直在谷歌上搜索。
感谢各位:)
发布于 2012-03-21 04:12:23
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是1,你可以这样想:
DTimeSigBuf[1] = new double[4];发布于 2012-03-21 04:03:43
它是一个指向double的指针数组。MAX_TIME_CHANNELS是数组的大小。
语句with malloc的效果是分配了一个足够大的内存块,可以容纳block_size_samples的双精度值;然后将内存块的地址分配给DTimeSigBuf数组的chanNum元素。
发布于 2012-03-21 04:07:07
它是一个双精度类型的数组指针。MAX_CHANNEL_TIMES是一个常量,也是数组的大小
https://stackoverflow.com/questions/9794002
复制相似问题