将两个2D数组传递给函数c++
Passing two 2D array to a function c++
我正在尝试制作一个程序,从用户那里获得两个矩阵的输入。然后将输入的数据传递给另一个函数进行计算。两个矩阵的和被传递给第三个函数以打印输出。
我面临的问题是在函数之间传递数组,否则代码的逻辑就很好。
我的代码的问题是我没有得到打印函数的输出。此外,add函数不进行任何计算,因为我认为数组中的数据不会被传递。
有人能向我解释一下我路过时做错了什么吗。
const int MTRX_MAX = 3;
//Function Prototypes
void Get_Matrix(); //Ask the user for input
void Add_Matrix(int matrix1[][MTRX_MAX], int matrix2[][MTRX_MAX], int sum[][MTRX_MAX]); //Calculates the sum of the matrecies
void Print_Matrix(int matrix1 [][MTRX_MAX], int matrix2 [][MTRX_MAX]); //Printout the inputed data
int main()
{
int matrix1[MTRX_MAX][MTRX_MAX];
int matrix2[MTRX_MAX][MTRX_MAX];
int sum[MTRX_MAX][MTRX_MAX];
Get_Matrix();
Add_Matrix(matrix1,matrix2,sum);
Print_Matrix(matrix1, matrix2,sum);
return 0;
}
//Function Definetions
void Get_Matrix()
{
int matrix1[3][3] = { 0 };
int matrix2[3][3] = { 0 };
cout << "Enter the first Matrix: n";
for (int i = 0; i < MTRX_MAX; i++)
{
for (int j = 0; j < MTRX_MAX; j++)
{
cin >> matrix1[i][j];
}
}
////////////////
cout << "Enter the second Matrix: n";
for (int i = 0; i < MTRX_MAX; i++)
{
for (int j = 0; j < MTRX_MAX; j++)
{
cin >> matrix2[i][j];
}
}
}
void Add_Matrix(int matrix1[][MTRX_MAX], int matrix2[][MTRX_MAX], int sum[][MTRX_MAX])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
sum[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
}
void Print_Matrix(int matrix1[][MTRX_MAX], int matrix2[][MTRX_MAX])
{
for (int i = 0; i < MTRX_MAX; i++)
{
for (int new_line = 0; new_line < 1; new_line++)
{
for (int j = 0; j < MTRX_MAX; j++)
{
cout << sum[i][j] << " ";
}
cout << endl;
}
}
}
程序输出:
输入第一个矩阵:
1 2 3 4 5 6 7 8 9
输入第二个矩阵:
9 8 7 6 5 4 3 2 1
-1717986920-1717986920-1717986920-1717986920-1717986920-1717986920-1717986920-1717986920-1717986920
按任意键继续。
在注释中:
for (int new_line = 0; new_line == 1; new_line++) //The condition 'new_line==1' doesn't really seems to be fulfilled
{
for (int j = 0; j < MTRX_MAX; j++)
{
cout << matrix1[i][j] << " ";
}
cout << endl;
}
你最终什么都不打印。
更新1:实际上您不需要额外的循环for (int new_line = 0; new_line == 1; new_line++)
更新2:void Print_Matrix(int matrix1[][MTRX_MAX], int matrix2[][MTRX_MAX])
确实知道代码中的int sum[i][j]
是什么。事实Print_Matrix(matrix1, matrix2,sum);
与您的声明和定义相矛盾。
Get_Matrix
将用户输入存储到局部变量中。当函数返回时,它们会超出范围,从而丢弃数据。您的原型在传递函数的2D数组时看起来是正确的。当您想要传递可变维度的2D数组时,事情会变得更棘手,但对于除第一维度外的所有维度都是编译时间常数的情况,您可以做到这一点。
Get_Matrix
需要采用与其他矩阵函数相同的参数(非常数),并将矩阵存储到调用方提供的空间中
(另一种方法是使用全局变量,而不是四处传递指针,但不要这样做。)
使用调试器会显示Get_Matrix
返回时没有设置main
的数组。
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗