3d数组作为函数参数

问题描述:

我有一个函数,它将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

#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