将动态二维数组作为参数传递给c++; Hythes,我实际上试图在C++中创建一个2D数组,但是当我执行下面的语句时,它不能创建它 int arr=new int[10][10] 它给了我错误,当我在谷歌上搜索时,它显示了C++中的2D数组是指针数组,它声明如下语句 int** a = new int*[rowCount]; for(int i = 0; i < rowCount; ++i) a[i] = new int[colCount];

将动态二维数组作为参数传递给c++; Hythes,我实际上试图在C++中创建一个2D数组,但是当我执行下面的语句时,它不能创建它 int arr=new int[10][10] 它给了我错误,当我在谷歌上搜索时,它显示了C++中的2D数组是指针数组,它声明如下语句 int** a = new int*[rowCount]; for(int i = 0; i < rowCount; ++i) a[i] = new int[colCount];,c++,pointers,dynamic-arrays,pointer-to-pointer,C++,Pointers,Dynamic Arrays,Pointer To Pointer,或者不是,我无法得到当指针指向矩阵时,这个指针指向指针的指针将如何工作的逻辑,还有一件事是,我无法将它作为参数传递给函数。下面给出了将其作为参数传递的代码 void displayArray(int a[10][10]) { for (int i=0; i<10; i++) { for(int j=0; j<10; j++) { cout<<*a[i][j]<<"\t&q

或者不是,我无法得到当指针指向矩阵时,这个指针指向指针的指针将如何工作的逻辑,还有一件事是,我无法将它作为参数传递给函数。下面给出了将其作为参数传递的代码

void displayArray(int a[10][10])
{
        for (int i=0; i<10; i++)
    {
        for(int j=0; j<10; j++)
        {
            cout<<*a[i][j]<<"\t";
        }
        cout<<endl;
    }
}

int main()
{
    int** a = new int*[10];
    for(int i = 0; i < 10; ++i)
        a[i] = new int[10];

    displayArray(**a);
}

实际上,我无法理解如何在矩阵中使用指向指针的指针,与其他语言相比,它太复杂了,我们只需要使用
new
操作符,就可以使用它们的维度访问它们,不需要这个指向指针的概念。请帮助我理解C++ 2D动态数组的整个逻辑。

,你需要在函数中得到参数作为指针

void displayArray(int **a)
{
        for (int i=0; i<10; i++)
    {
        for(int j=0; j<10; j++)
        {
            cout<< a[i][j] <<"\t";
        }
        cout<<endl;
    }
}

int main()
{
    int** a = new int*[10];
    for(int i = 0; i < 10; ++i)
        a[i] = new int[10];

    displayArray(a);
}
void显示数组(int**a)
{

对于(int i=0;iPop测验:
a
的类型是什么?这与
displayArray
的参数必须是同一类型。如果大小不同,如
int[10][20],问答会更清晰不幸的是,它们是相同的。我实际上试图在C++中创建一个2D数组,但是不能创建它——“它与其他语言相比太复杂了”。-这不一定是一个完全公平的比较。大多数其他语言无法做到这一点。这超出了它们的范围。这些都是非常低级的数组结构,即使是大多数
C++
程序员也不需要使用。要想获得与另一种语言中的动态数组更等效的东西,您应该看看
std::vector
f或数组和
std::vector
用于二维数组。
error: invalid conversion from ‘int’ to ‘int (*)[10]’ [-fpermissive]
void displayArray(int **a)
{
        for (int i=0; i<10; i++)
    {
        for(int j=0; j<10; j++)
        {
            cout<< a[i][j] <<"\t";
        }
        cout<<endl;
    }
}

int main()
{
    int** a = new int*[10];
    for(int i = 0; i < 10; ++i)
        a[i] = new int[10];

    displayArray(a);
}