C++ 编写一个添加两个矩阵的函数 void add_矩阵(int-matrix_1[m][n]、int-matrix_2[m][n]、int-matrix_3[m][n]、int-num行、int-num列) { 对于(int i=0;i

C++ 编写一个添加两个矩阵的函数 void add_矩阵(int-matrix_1[m][n]、int-matrix_2[m][n]、int-matrix_3[m][n]、int-num行、int-num列) { 对于(int i=0;i,c++,C++,我正在尝试编写一个函数,它可以添加两个矩阵(2-D数组)。下面是我在程序中定义函数的代码片段。我可以发布我的代码的其余部分,但我认为这可能更容易查看 当我运行代码时,它会在以矩阵3开头的行上显示“thread1:EXC_BAD_ACCESS”。我认为问题在于我传递给函数的参数。矩阵1和2在main中填充,矩阵3在main中创建,但为空。for(int j=0;i

我正在尝试编写一个函数,它可以添加两个矩阵(2-D数组)。下面是我在程序中定义函数的代码片段。我可以发布我的代码的其余部分,但我认为这可能更容易查看

当我运行代码时,它会在以矩阵3开头的行上显示“thread1:EXC_BAD_ACCESS”。我认为问题在于我传递给函数的参数。矩阵1和2在main中填充,矩阵3在main中创建,但为空。

for(int j=0;i

这应该是:

for(int j=0;j
for(int j=0;i

这应该是:


for(int j=0;j

是否通过引用传递矩阵3?(我不确定它是否能解决问题,但…)数组是通过引用自动传递的,所以我认为这不是问题所在
m
n
在哪里定义?这是一个模板函数吗?请记住,当这个函数结束时,您的
matrix_3
参数将被丢弃,而不会像Victor指出的那样实际执行任何有用的操作。是的。。我忽略了它!tadman一直在和我赛跑:如果m和n似乎是模板参数,为什么要传递num_rows和num_cols?我还想说,这样的代码非常反C++。通常,您会使用
std::vector
在一个简单的模板包装类中存储数据,并编写
operator+
来处理添加情况。这意味着
a=b+c
适用于任何给定的兼容矩阵实例集。您不想通过引用传递矩阵_3吗?(我不确定它是否能解决问题,但…)数组是通过引用自动传递的,所以我认为这不是问题所在
m
n
在哪里定义?这是一个模板函数吗?请记住,当这个函数结束时,您的
matrix_3
参数将被丢弃,而不会像Victor指出的那样实际执行任何有用的操作。是的。。我忽略了它!tadman一直在和我赛跑:如果m和n似乎是模板参数,为什么要传递num_rows和num_cols?我还想说,这样的代码非常反C++。通常,您会使用
std::vector
在一个简单的模板包装类中存储数据,并编写
operator+
来处理添加情况。这意味着
a=b+c
适用于任何一组给定的兼容矩阵实例。哇,真不敢相信我竟然没有领会到这一点。谢谢哇,真不敢相信我没听懂。谢谢
void add_matrices(int matrix_1 [m][n], int matrix_2 [m][n], int matrix_3 [m][n], int num_rows, int num_cols)
{
  for (int i = 0; i < num_rows; i++)
  {
    for (int j = 0; i < num_cols; j++)
    {
        matrix_3[i][j] = matrix_1[i][j] + matrix_2[i][j];
    }
  }
} // end of function that adds two matrices