2次元配列を渡す場合、外側の要素数は省略できません。
以下のようにする必要があります。
c
1#include "stdio.h"
2
3void print_array(int array[][3], size_t rows)
4{
5
6 for (size_t i = 0; i < rows; ++i) {
7 for (size_t j = 0; j < 3; ++j) {
8 printf("%d ", array[i][j]);
9 }
10 printf("\n");
11 }
12}
13
14int main()
15{
16 int array[3][3]{
17 {1, 2, 3},
18 {4, 5, 6},
19 {7, 8, 9},
20 };
21
22 print_array(array, 3);
23
24 return 0;
25}
26
vector で書き直した例
C++ なら C の配列でなく、std::vector を使ったほうがよいでしょう。
cpp
1#include <iostream>
2#include <vector>
3
4using Mat = std::vector<std::vector<int>>;
5
6void print_array(const Mat &mat)
7{
8 for (size_t i = 0; i < mat.size(); ++i) {
9 for (size_t j = 0; j < mat[0].size(); ++j) {
10 std::cout << mat[i][j] << " ";
11 }
12 std::cout << std::endl;
13 }
14}
15
16int main()
17{
18 Mat mat{
19 {1, 2, 3},
20 {4, 5, 6},
21 {7, 8, 9},
22 };
23
24 print_array(mat);
25
26 return 0;
27}