首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自java程序员的c#编程问题。

来自java程序员的c#编程问题。
EN

Stack Overflow用户
提问于 2012-03-21 03:59:47
回答 6查看 182关注 0票数 4

所以我需要把一个C库翻译成纯java,到目前为止它看起来还不错,但我被困在这里了。

谁能给我解释一下下面的指针是用来做什么的?

代码语言:javascript
复制
double *DTimeSigBuf[MAX_TIME_CHANNELS];

好的,我知道这是一个双类型指针,名为DTimeSigBuf,但是括号里的是什么?在h文件中,MAX_TIME_CHANNELS也被定义为:

代码语言:javascript
复制
 #define MAX_TIME_CHANNELS 2

然后在代码中这个常量值发生变化,就像它指向其他地方一样,但我不知道它到底是什么意思。这是否等同于说:

代码语言:javascript
复制
double *DTimeSigBuf = MAX_TIME_CHANNELS;

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

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

代码语言:javascript
复制
DTimeSigBuf[chanNum]            = (double*)malloc(block_size_samples*sizeof(double));

其中block_size_samples是int,chanNum是for迭代器变量?

请帮帮我!我发誓我一直在谷歌上搜索。

感谢各位:)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-21 04:12:23

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

代码语言:javascript
复制
double *DTimeSigBuf[MAX_TIME_CHANNELS];

可以被认为是

代码语言:javascript
复制
double DTimeSigBuf[MAX_TIME_CHANNELS][]

这条线

代码语言:javascript
复制
DTimeSigBuf[chanNum] = (double*)malloc(block_size_samples*sizeof(double));

正在为block_size_samples分配内存double类型的变量的数量要放在DTimeSigBuf[chanNum]指向的数组中。

为例:

如果block_size_samples4chanNum1,你可以这样想:

代码语言:javascript
复制
DTimeSigBuf[1] = new double[4];
票数 3
EN

Stack Overflow用户

发布于 2012-03-21 04:03:43

它是一个指向double的指针数组。MAX_TIME_CHANNELS是数组的大小。

语句with malloc的效果是分配了一个足够大的内存块,可以容纳block_size_samples的双精度值;然后将内存块的地址分配给DTimeSigBuf数组的chanNum元素。

票数 5
EN

Stack Overflow用户

发布于 2012-03-21 04:07:07

它是一个双精度类型的数组指针。MAX_CHANNEL_TIMES是一个常量,也是数组的大小

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9794002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档