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

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&lt;&lt;arr[i][j]&lt;&lt;"\t";

或者把print1的定义改成

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

【讨论】:

以上是关于无法使用双指针作为函数参数传递二维数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C语言函数传递二维数组

将二维双数组从 C# 传递到 C++ 函数

c语言中怎么用二维数组作为函数参数

c语言中怎么用二维数组作为函数参数

C-二维数组作为函数参数, 字符数组

将二维数组指针传递给c ++中的函数[重复]