想编写一个计算方阵乘法的函数,在动态分配二维数组的内存时遇到问题
代码如下
#include<iostream>using namespace std;int *SQUARE_MATRIX_MULTIPLY(int *A,int *B,int n){ int *C=new int[n][n]; for(int i=0;i<=n-1;i++) for(int j=0;j<=n-1;j++) { C[i][j]=0; for(int k=0;k<=n-1;k++) C[i][j]=C[i][j]+A[i][k]*B[k][j]; } return C;}int main(){ int A[2][2]={{1,2},{3,4}},B[2][2]={{4,3},{1,2}}; int *C=SQUARE_MATRIX_MULTIPLY(A,B,4); for(int i=0;i<=3;i++) for(int j=0;j<=3;j++) cout<<C[i][j]<<endl; return 0;}
#include<iostream>using namespace std;//模板方阵(ps:如果你还不了解模板是神马东东,请先百度C++模板,看懂了模板再回头看这个代码)template < int M >void SquareMatrixMultiply( int a[M][M], int b[M][M], int d[M][M] ){ //之前的第三个参数可以用M来自动识别, 修改了一下,把数组直接传进来当假参数了 //修改了一下变量名,另外把所有的n都替换成了模板数M for( int i = 0; i < M; i++ ) for( int j = 0; j < M; j++ ) { d[i][j] = 0; for( int k = 0; k < M; k++ ) d[i][j] = d[i][j] + a[i][k] * b[k][j]; }}int main(){ //只修改了变量名 int arA[2][2] = { { 1, 2 }, { 3, 4 } } ,arB[2][2] = { { 4, 3 }, { 1, 2 } }; int arD[2][2] = {0}; //把它修改作为参数 //稍微修改函数 SquareMatrixMultiply( arA, arB, arD ); //输出稍微修改了一下 for( int i=0; i < 2; i++ ) { for( int j=0; j < 2; j++ ) cout << arD[i][j] << ','; cout << endl; } return 0;}