2015-06-26 67 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