将动态二维数组作为参数传递给 C++ 中的函数
Passing Dynamic Two Dimensional Array as argument to a functoin in c++
伙计们,我实际上试图在 C++ 中创建一个二维数组,但无法创建它,当我执行以下语句时
int arr=new int[10][10]
它给了我错误,当我在 google 上搜索时,它显示 C++ 中的二维数组是指针数组,其声明如下面的语句
int** a = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
a[i] = new int[colCount];
我得到的逻辑是一个指向矩阵的指针的指针,但现在我无法理解逻辑,比如我如何指向这个矩阵上的数据,假设要看到索引中的数字存储 a[0][0]
我应该写
cout<<a[0][0]
或不,当指针指向矩阵时,我无法理解这个指向指针的指针将如何工作的逻辑,还有一件事是我无法将它作为参数传递给功能。将其作为参数传递的代码如下
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);
}
它给我以下错误
error: invalid conversion from ‘int’ to ‘int (*)[10]’ [-fpermissive]
实际上我无法理解如何在矩阵中使用指向指针的指针,与我们只需要使用 new
运算符并可以访问它们的其他语言相比,它太复杂了它们的尺寸,不需要这个指向指针概念的指针。请帮助我理解这个 2d c++ 动态数组的整个逻辑。
你需要在你的函数中获取参数作为指针
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);
}
它打印 10 行和 0 列的值,因为二维数组未初始化
伙计们,我实际上试图在 C++ 中创建一个二维数组,但无法创建它,当我执行以下语句时
int arr=new int[10][10]
它给了我错误,当我在 google 上搜索时,它显示 C++ 中的二维数组是指针数组,其声明如下面的语句
int** a = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
a[i] = new int[colCount];
我得到的逻辑是一个指向矩阵的指针的指针,但现在我无法理解逻辑,比如我如何指向这个矩阵上的数据,假设要看到索引中的数字存储 a[0][0]
我应该写
cout<<a[0][0]
或不,当指针指向矩阵时,我无法理解这个指向指针的指针将如何工作的逻辑,还有一件事是我无法将它作为参数传递给功能。将其作为参数传递的代码如下
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);
}
它给我以下错误
error: invalid conversion from ‘int’ to ‘int (*)[10]’ [-fpermissive]
实际上我无法理解如何在矩阵中使用指向指针的指针,与我们只需要使用 new
运算符并可以访问它们的其他语言相比,它太复杂了它们的尺寸,不需要这个指向指针概念的指针。请帮助我理解这个 2d c++ 动态数组的整个逻辑。
你需要在你的函数中获取参数作为指针
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);
}
它打印 10 行和 0 列的值,因为二维数组未初始化