2013-04-25 96 views
0

我有一個函數,它將2d數組作爲參數。然後我有一個3d陣列,例如temp[5][100][100]。我想將這個數組的2d部分傳遞給函數。我怎樣才能做到這一點?3d數組作爲函數參數

int inteference_sets(int array[][],int array_size,int max_channel){ 
    //function codes 
} 
int main(){ 
    int k; 

    int temp[5][100][100]; 
    for(k=1;k<=4;k++){ 
     interference_sets(temp[k], ,) //this is how the program intends to work 
    } 
} 

這可能嗎?如果是,那麼如何?

+0

「第二部分」我假設你指的是任何五個100x100分區,通過引用/地址。 – WhozCraig 2013-04-25 15:04:15

+0

是的..我想你讓我對! – 2013-04-25 15:08:18

+0

然後你明智地選擇了...。 – WhozCraig 2013-04-25 15:09:06

回答

2
#define DIM1 100 
#define DIM2 100 

int inteference_sets(int (*array)[DIM2], int array_size, int max_channel) 
{ 
    int row, col; 

    for(row = 0; row < array_size; row++) 
    { 
     for(col = 0; col < DIM2; col++) 
     { 
      int value = array[row][col]; 
      //function codes 
     } 
    } 
} 

int main() 
{ 
    int k; 

    int temp[5][DIM1][DIM2]; 

    for(k=1;k<=4;k++) 
    { 
     interference_sets(temp[k], DIM1,) //this is how the program intends to work 
    } 
} 
+0

+1。還要注意,與C++不同,幾乎所有合理的智能C實現都支持包括VLA參數的VLA(可變長度數組)。這允許您在運行時指定編譯器通常需要常量推導的內容。 [以生活爲例](http://ideone.com/WOTbQr)。很好的答案。 – WhozCraig 2013-04-25 15:26:09