【问题标题】:How to pass a bidimensional array as an argument to a function?如何将二维数组作为参数传递给函数?
【发布时间】:2013-10-05 10:56:34
【问题描述】:

我正在尝试制作一个显示某个矩阵的函数; 这就是我试图做的:

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;
        }
    }

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

【问题讨论】:

  • 请用语言标记您的问题。
  • 我猜它是 C++,但你是对的。他应该标记语言。
  • endl; 什么都不做。你的意思可能是std::cout &lt;&lt; std::endl;
  • @aschepler 我正要说点什么,但我疲惫的大脑自己错过了结尾。
  • 这与函数指针没有任何关系,因此请删除该标记

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


【解决方案1】:

我认为问题可能在于您的 ij 索引从 1 开始而不是 0。 尝试以下方法:

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

【讨论】:

    【解决方案2】:

    void print(int n, int a[n][n]) 实际上变成了void print(int n, int a[][])

    如果知道大小,您可以使用:

    void print(int (&amp;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(不包括)。

    【讨论】:

      【解决方案3】:
      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)
      

      【讨论】:

        猜你喜欢
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2021-08-17
        • 2022-08-09
        • 1970-01-01
        • 2015-08-23
        • 2011-06-15
        • 1970-01-01
        相关资源
        最近更新 更多