【发布时间】:2014-12-01 12:02:52
【问题描述】:
对 C++ 相当陌生。 我的代码开头有这些声明:
#include <iostream>
#include <iomanip>
using namespace std;
int m, n;
void indtastVektor(double A[m]);
void indtastMatrix(double A[m][n]);
我的主要看起来像这样:
int main() {
string svar;
do {
cout
<< "Ønskes indtastning af en vektor eller en matrix? Tast v for vektor og m for matrix: ";
svar = cin;
if (svar == "v" or svar == "V") {
cout << "Indtast det ønskede antal rækker i vektoren som heltal: ";
cin >> m;
double vektor[m];
indtastVektor(vektor);
break;
} else if (svar == "m" or svar == "M") {
cout << "Indtast det ønskede antal rækker i matricen som heltal: ";
cin >> m;
cout << "Indtast det ønskede antal søjler i matricen som heltal: ";
cin >> n;
double matrix[m][n];
indtastMatrix(matrix); // This line of code gives me an error
break;
} else {
cout << "Intet gyldigt svar indtastet - forsøg igen. \n";
}
} while (true);
return 0;
}
行:indtastMatrix(matrix);给我以下错误:
没有匹配的函数调用“indtastMatrix”
基本上,该函数采用用户指定的 m 和 n 并使用这些值创建一个二维数组。 Eclipse 给了我这个解释:
第一个参数没有从 'double [m][n]' 到 'double (*)[n]' 的已知转换 void indtastMatrix(double A[m][n]);
这到底是什么意思?我想我可能还需要在 main 函数之前初始化 m 和 n?
让我困惑的是这段代码没有返回任何错误:
cin >> m;
double vektor[m];
indtastVektor(vektor);
如果函数接受一维数组作为参数,我怎么能在运行时初始化变量并将其传递给函数,但如果它是二维的则不行?
谢谢!
【问题讨论】:
标签: c++ arrays multidimensional-array initialization