我是 C++ 新手,我正在尝试编写一个使用双指针将两个数组相乘的程序。到目前为止,我的代码是:
#include <iostream>
using namespace std;
//multiplies two matrices A(mxl) and B(lxn) to produce C(mxn)
int m,l,n;
int **A, **B, **C;
void main(void)
{
...用户输入 m,l,n 并像这样分配内存。
int i, j;
//creates a new mxl array
A= (int**) new int*[m];
for(i=0;i<m;i++)
{
A[i]=new int[l];
}
//creates a lxn array
B = (int**) new int*[l];
for(i=0;i<l;i++)
{
B[i]=new int[n];
}
//creates a mxn array
C = (int**) new int*[m];
for(i=0;i<n;i++)
{
C[i]=new int[n];
}
int sum = 0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(int k=0;k<l;k++)
{
sum =+ A[i][k]*B[k][j];
}
}
//cout<sum<<"\t";
到目前为止一切正常。如果我将其更改为仅 cout 'sum' 那么它将以正确的顺序返回数组的所有正确元素;当我尝试将此值放入数组时,它会返回错误消息。
C[i][j]=sum;
}
}
我确信有一种更好的方法可以将矩阵相乘,但我更想知道为什么这段特定的代码不起作用;它看起来很简单,我看不出错误来自哪里。