从struct中调用string对象会使程序停止运行



我是一个c++初学者。我感谢任何可以改进我的代码的建议,但我真正想要的是一个解释,为什么我当前的代码没有返回我想要的。

#include <iostream>
#include <string>
using namespace std;

struct MATRIX {
float values[1][1];
string names;
};
MATRIX get_matrix(string name, MATRIX m){
m.names = name;
cout << "Enter values of 2x2 Matrix:" << endl;
cin >> m.values[0][0];
cin >> m.values[0][1];
cin >> m.values[1][0];
cin >> m.values[1][1];
return m;
}
// end get_matrix1
MATRIX get_matrix2(string name2, MATRIX m2){
m2.names = name2;
cout << "Enter values of 2x2 Matrix:" << endl;
cin >> m2.values[0][0];
cin >> m2.values[0][1];
cin >> m2.values[1][0];
cin >> m2.values[1][1];
return m2;
}

int main(){
string testname;
MATRIX matrixtest;
string testname2;
MATRIX matrixtest2;
cout << "Name 1st Matrix:" << endl;
cin >> testname;
MATRIX result = get_matrix(testname, matrixtest);


cout << "Name 2nd Matrix:" << endl;
cin >> testname2;
MATRIX result2 = get_matrix2(testname2, matrixtest2);

cout << "[" << result.values[0][0] << "," << result.values[0][1] << "]" << endl;
cout << "[" << result.values[1][0] << "," << result.values[1][1] << "]" << endl << endl;
cout << "[" << result2.values[0][0] << "," << result2.values[0][1] << "]" << endl;
cout << "[" << result2.values[1][0] << "," << result2.values[1][1] << "]" << endl << endl;
}


它应该返回矩阵的名称及其值。每当它碰到result中的name成员时它只是停止程序。

编辑:更新为当前代码

在c++中声明数组时,必须指定元素的个数,而不是最大索引。

用这个声明

float values[1][1];

只有values[0][0]可用。

声明应该是

float values[2][2];

相关内容

  • 没有找到相关文章

最新更新