【问题标题】:Unable to pass two dimensional array using double pointer as function argument [duplicate]无法使用双指针作为函数参数传递二维数组[重复]
【发布时间】:2016-05-28 02:35:56
【问题描述】:

我正在尝试使用双指针将二维数组传递给函数,但是编译器给出以下错误

[Error] cannot convert 'int (*)[3]' to 'int**' for argument '1' to 'void print1(int**, int, int)

代码如下:

#include<iostream>
using namespace std;
void print1(int **arr,int r,int c);

int main()
{
    int a[2][3]={{10,20,30},{40,50,60}};

    int r=2;
    int c=3;
    print1(a,r,c);
}
void print1(int **arr,int r,int c){
    int i,j;
    for(i=0;i<r;i++){
        for(j=0;j<c;j++){
            cout<<arr[i*r+j]<<"\t";
        }
    }
}

我想用双指针模拟二维数组。

【问题讨论】:

    标签: c++ pointers


    【解决方案1】:

    多维数组不是指针数组。 int** 表示指向指针的指针,而 int (*)[3] 表示指向 3 个整数数组的指针。您应该将您的 print1 定义更改为:

    void print1(int (*arr)[3],int r,int c)

    您还在函数内部使用了错误的arr。看起来您正在尝试将指针用作指向整个内存区域开头的整数。您应该将其更改为

    cout&lt;&lt;arr[i][j]&lt;&lt;"\t";

    或者把print1的定义改成

    void print1(int *arr,int r,int c)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2017-02-03
      • 2021-10-09
      • 2016-01-10
      相关资源
      最近更新 更多