2015-06-26 44 views
2

我在程序中有一个大小为4096的数组,并且在程序的某个阶段之后,此数组不再需要。同时,我从应用程序中获得不同的测量数据集。我不是创建这么多的数组,而是重复使用相同的数组来节省应用程序的内存空间。我在上述阵列中存储了较小尺寸(例如:64)的不同测量数据。将特定大小的数组传递给函数C

实施例: 双bigArray的目的[4096]完成并且该阵列在程序存储其他测量值的后面部分再利用。

  • 测得的数据存储在bigArray大小为64的1 [0至63]
  • 测得的数据存储在bigArray大小64 2 64〜127]
  • 测得的数据存储在bigArray [大小64 3 128至191]

现在我需要将值传递给其它功能,如下所示:

void main() 
{ 
    xyzFunction(bigArray[0:63], bigArray[64:127], bigArray[128:191]); 
} 

void xyzFunction(double *data1, double *data2, double *data3) 
{ 
    ...calculations involving data1, data2, data3... 
} 

DATA1应该只指向冷杉t 64个数组元素,等等。我尝试过,但无法准确地将一部分数据从bigArray传递给函数。

任何帮助完成这一点是高度赞赏。 在此先感谢。

+0

由于指针只指向* one *元素,所以您不能仅指向64个第一个元素,但您可以选择指向哪个元素:'(&bigArray [0],&bigArray [64],&bigArray [128])'。 – molbdnilo

回答

2

你需要传递一个大小参数,这样

void xyzFunction(double *data1, size_t data1size, 
    double *data2, size_t data2size, double *data3, size_t data3size) 
{ 
    /* ...calculations involving data1, data2, data3... */ 
} 

,只是这样称呼它

xyzFunction(bigArray, 64, bigArray + 64, 64, bigArray + 128, 64); 

哦,顺便说一下,这相当于@molbdnilo的评论,除非你应该通过这个尺寸,除非它总是一样的。

+0

或等价地,'xyzFunction(&bigArray [0],64,&bigArray [64],64,&bigArray [128],64);' – user3528438

+0

@ user3528438是的,这就是为什么我添加了对[this comment] /stackoverflow.com/questions/31074293/pass-array-of-specific-size-to-a-function-in-c/31074363#comment50167351_31074293)。 –

+0

在评论中只有地址通过。 – haccks