无法使用双指针作为函数参数传递二维数组
Unable to pass two dimensional array using double pointer as function argument
我正在尝试使用双指针将 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)
相关文章:
- 如何在C++中将迭代器作为函数参数传递
- 为什么我不能将引用作为 std::async 的函数参数传递
- 节点插件 API 将数组作为函数参数传递
- 将字符串数组作为函数参数传递
- 如何通过 C++ 中的函数参数传递初始值设定项列表的固定大小的初始值设定项列表?
- 我可以动态创建新地图并作为函数参数传递吗?
- 将任意模板向量作为函数参数C++传递
- 将函数指针作为函数参数传递的目的
- C++:通过函数参数传递的值给出不同的结果
- 当数组大小在C++中未知时,如何在运行时将对字符串数组的引用作为函数参数传递?
- 通过宏将函数参数传递给函数
- C++:访问作为函数参数传递的双指针数组所指向的变量的值
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 将派生类构造函数参数传递给受保护的成员
- 将指向数组的指针作为函数参数传递,这本身就是另一个函数的返回值?
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 有什么理由C++ 11+ std::mutex 应该声明为全局变量,而不是作为函数参数传递到 std::thread 中
- 如何将派生类作为函数参数传递:如果派生类成员不在父类中怎么办
- 如何将变量作为构造函数参数或函数参数传递
- 当数组对象以函数参数传递时,为什么复制构造函数会自称