如何将二维数组作为参数传递给函数?

时间:2013-10-05 10:56:34

标签: c++ arrays function multidimensional-array function-pointers

我正在尝试创建一个显示某个矩阵的函数;  这就是我试图做的事情:

void print(int n,int a[n][n])
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cout<<a[i][j];
            }
            endl;
        }
    }

我知道这不正确,但我没有更好的主意。请帮帮我!

3 个答案:

答案 0 :(得分:0)

我认为问题可能是您的ij索引从1开始而不是零。 尝试以下内容:

int a[m][n];
for (int i=0; i<m; ++i){
    for (int j=0; j<n; ++j){
        cout << a[i][j];
    }
    cout << endl;
}

答案 1 :(得分:0)

void print(int array[][n],int n){

  for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
          cout<<array[i][j];
      }
  cout<<endl;
  }
  return ;
}

print(array,size)

答案 2 :(得分:0)

void print(int n, int a[n][n])实际上转变为void print(int n, int a[][])

如果知道尺寸,您可以使用:

void print(int (&a)[42][42])

或以通用方式:

template <int N, int M>
void print(int (&a)[N][M])
{
    for (int j = 0; j != M; ++j) {
        for (int i = 0; i != N; ++i) {
            std::cout << a[i][j] << " ";
        }
        std::cout << std::endl;
    }
}

注意:索引从0(含)到N(不包括)。