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
}
}
这可能吗?如果是,那么如何?
答
#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
“第二部分”我假设你指的是任何五个100x100分区,通过引用/地址。 – WhozCraig 2013-04-25 15:04:15
是的..我想你让我对! – 2013-04-25 15:08:18
然后你明智地选择了...。 – WhozCraig 2013-04-25 15:09:06