1

我正在尝试制作一个打印出二维数组的函数。我做了一个打印出一维数组的方法。

 #include <iostream>
 using namespace std;

void printArray (int theArray[],int sizeOfArray);
int main ()

{
int array1[3] = {1,3,7};
int array2[5] = {123,5,23,2,324};

printArray(array1, 3);
printArray(array2, 5);

}  

void printArray (int theArray[],int sizeOfArray){


for (int x=0; x<sizeOfArray; x++) {
    cout<<theArray[x] <<" ";
}
cout<<endl;  
}

我编写了这些代码来打印二维数组,但我失败了。

#include <iostream>
using namespace std;

void printArray (int theArray[][],int sizeOfRow, int sizeOfCol);

int main ()

{
int array[2][3] = {{1,3,7},{5,3,2}};

printArray(array, 2,3);


}

void printArray (int theArray[][],int sizeOfRow, int sizeOfCol){


for (int x=0; x<sizeOfRow; x++) 

    for (int y=0; y<sizeOfCol; y++) {

        cout<<theArray[x][y] <<" ";
}
cout<<endl;
}

我的编译器说数组的元素类型“int []”不完整。打印二维数组的正确代码是什么?

4

3 回答 3

3

由于在编译期间必须知道数组大小,因此您可以使用模板为函数提供灵活性。

template< typename T, size_t N, size_t M >
void printArray( T(&theArray)[N][M]  ) {
    for ( int x = 0; x < N; x ++ ) {
        for ( int y = 0; y < M; y++ ) {
            cout << theArray[x][y] << " ";
        }
    }
}

printArray( array ); 

这更好,因为不需要在任何地方传递数组的维度,也可以通过向模板添加额外的参数来处理 3D、4D 数组。

于 2013-05-02T20:46:08.103 回答
1

对于多维数组,您需要在函数声明中声明数组的大小。

所以你的方法需要看起来像:

void printArray (int theArray[][3],int sizeOfRow, int sizeOfCol)

然后它应该编译并工作。

于 2013-05-02T20:45:24.660 回答
0

打印二维数组的技巧——使用变量 r 和 c(即用于行和列)更容易可视化数组是如何打印出来的。

如上所述,在传递二维数组时,语言需要列大小。

函数头应如下所示:

void printArray (int theArray[][3],int sizeOfRow, int sizeOfCol)
于 2013-05-02T21:49:47.163 回答