#include <stdio.h>
void arraypass(int from, int to, int a[][2]);
int main()
{
setbuf(stdout, NULL);
int t1 = 0, t2 = 0;
int testArray[10][2];
for (t1 = 0; t1 < 10; t1++)
{
testArray[t1][t2] = t1 + 1;
}
t2++;
for (t1 = 0; t1 < 10; t1++)
{
testArray[t1][t2] = t1 + 10;
}
arraypass(1,5,testArray);
return 0;
}
void arraypass(int from, int to, int a[][2])
{
int b;
for (b = from; b <= to; b++)
{
printf("%d ",a[b][0]);
printf("%d\n",a[b][1]);
}
}
为什么会这样
int a[][2]
可以,但不行
int a[][]
这里的参数定义?
void arraypass(int from, int to, int a[][2]);
并且,有没有办法可以一次传递整个多维数组,或者我是否需要执行某种循环?
最佳答案
对于编译器来说, vector 是指向其第一项的隐藏指针。 例如:
int a[2];
a[0]=0;
a[1]=1;
与以下内容相同:
int a[2];
*(a+0)=0;
*(a+1)=1;
当您传递多维数组(或简单数组)时,您应该使用指针而不是 vector :
void arraypass(int from, int to, int **a);
如果你想使用它,你可以这样做:
void arraypass(int from, int to, int **a){
int i,j;
for(i=from; i<end; i++) {
for(j=0; j<2; j++) {
printf("%d",a[i][j]);
}
}
关于c - 以另一种方式传递多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020626/