gpt4 book ai didi

c - 将二维动态数组的一维传递给函数

转载 作者:行者123 更新时间:2023-11-30 17:49:56 25 4
gpt4 key购买 nike

我有一个在运行时动态分配的二维数组,如下所示

accData = calloc(nbox, sizeof(double *));
for(bb = 0; bb < nbox; bb++)
accData[bb] = calloc(usedTime * usedChan, sizeof(double *));

我只想将第二个维度传递给我的函数。这个数组代表在几个不同的“盒子”中定义的数据,对于每个盒子,我想将相关信息传递给函数,对其进行处理并将其存储在同一个数组中。目前我就是这样做的 -

for(bb = 0; bb < nbox; bb++) 
fftAndsubtract(accData[bb], ntime, nchan, nsigma, bb);

其中 fftAndSubtract 执行 FFT(快速傅里叶变换)和一些其他操作。函数定义如下:

int fftAndsubtract(double accData[], ntime, nchan, nsigma, bb);

但是 accData 似乎没有保存 fftAndSubtract 生成的修改值。我已经验证了这一点,因为我正在打印函数本身中完成的操作的输出。编译器没有提示,所以我不认为这是错误的。有更好的方法吗?

问题:有没有办法可以将 accData[bb] 传递给函数,以便函数完成的操作的输出存储在同一个数组中?

最佳答案

我猜您使用的是 32 位计算机。那么指针是 32 位,而 double 是 64 位。

这意味着您在循环中分配的“第二维”是错误的,并且只分配了所需数据的一半。要解决此问题,请在循环中的 calloc 调用中更改为 sizeof(double)

从技术上讲,您可能希望将 fftAndsubtract 中的 accData 参数的类型更改为指针,因为这就是您传递的内容。

关于c - 将二维动态数组的一维传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17547510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com