我正在尝试使用双指针将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";
}
}
}
我想用双指针模拟二维数组。
答案 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