【发布时间】:2021-08-09 02:04:39
【问题描述】:
我有这个代码:
int m, n;
cin>>m>>n;
double A[m][n];
//read values for A
如何将A 传递给函数?
【问题讨论】:
标签: c++ function multidimensional-array
我有这个代码:
int m, n;
cin>>m>>n;
double A[m][n];
//read values for A
如何将A 传递给函数?
【问题讨论】:
标签: c++ function multidimensional-array
可变长度数组是 C 功能,标准 C++ 不支持。然而,一些编译器如 gcc 支持它作为扩展。
在那些支持它的编译器上,您需要将数组维度作为参数传递,并将这些参数用作数组大小:
void handle_array(int m, int n, double A[m][n])
{
...
}
请注意,这只需要多维数组,而不是第一个维度。你也可以这样传递:
void handle_array(int m, int n, double A[][n])
{
...
}
或等效:
void handle_array(int m, int n, double (*A)[n])
{
...
}
【讨论】:
m是唯一需要单独传入的维度,写数组参数时必须指定n但是不是 m。更重要的是,它遗漏了一种不依赖编译器扩展的更惯用的 C++ 方法。