无法使用双指针作为函数参数传递二维数组

时间:2016-02-16 17:16:10

标签: c++ pointers

我正在尝试使用双指针将2D数组传递给函数,但编译器会出现以下错误

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

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

1 个答案:

答案 0 :(得分:1)

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

print1

您还在函数内部使用void print1(int (*arr)[3],int r,int c)错误。看起来您正在尝试将指针用作指向整个内存区域开头的整数。您应该将其更改为

arr

或将cout<<arr[i][j]<<"\t";的定义更改为

print1