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

Unable to pass two dimensional array using double pointer as function argument

本文关键字:函数 参数传递 二维数组 指针      更新时间:2023-10-16

我正在尝试使用双指针将 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";
        }
    }
}

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

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

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

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

cout<<arr[i][j]<<"t";

或将print1的定义更改为

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