Я пытаюсь сделать функцию, которая печатает двухмерные массивы.
Я сделал один, который распечатывает 1d массивов.
#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 [].
Каковы правильные коды для печати 2d массивов?
Поскольку размер массива должен быть известен во время компиляции, вы можете использовать шаблоны для обеспечения гибкости функции.
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 );
это гораздо приятнее, поскольку нет необходимости передавать размер массива где-либо, а также работать с трехмерным массивом, добавляя в шаблон дополнительный параметр.
Для многомерного массива вам нужно объявить размер массива в объявлении вашей функции.
Итак, ваш метод должен выглядеть так:
void printArray (int theArray[][3],int sizeOfRow, int sizeOfCol)
Тогда это должно скомпилироваться и работать.
Совет для распечатки двухмерных массивов — проще использовать переменные r и c (то есть для строк и столбцов), чтобы визуализировать, как распечатывается массив.
Как отмечено выше, размер столбца ТРЕБУЕТСЯ языком при передаче 2d массивов.
Заголовок функции должен выглядеть следующим образом:
void printArray (int theArray[][3],int sizeOfRow, int sizeOfCol)