无法使用双指针作为函数参数传递二维数组[重复]
Posted
技术标签:
【中文标题】无法使用双指针作为函数参数传递二维数组[重复]【英文标题】: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";
我想用双指针模拟二维数组。
【问题讨论】:
【参考方案1】:多维数组不是指针数组。 int**
表示指向指针的指针,而 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)
【讨论】:
以上是关于无法使用双指针作为函数参数传递二维数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章