У меня есть этот код:
int m, n;
cin>>m>>n;
double A[m][n];
//read values for A
Как я могу передать A
в функцию?
У меня есть этот код:
int m, n;
cin>>m>>n;
double A[m][n];
//read values for A
Как я могу передать A
в функцию?
Массивы переменной длины являются функцией 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++, который не зависит от расширения компилятора.@sweenish Да, добавил это.