这么基础的操作,都忘光了....
二级指针参数传递之后,一级解引用不知道要解成什么类型,就会报错,所以需要(int*)强转一次转回来。
调用方法不是网上说的(*(MatrixA+i))[j],也不是*(*(MatrixA+i)+j) !!!
可以调试查看内存,二级指针的内存存放是按照一级指针线性表达的!!!
#include <stdio.h>
void multiple_matrix(int **MatrixA, int **MatrixB, int **MatrixC, int N)
{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
*(int*)(MatrixC+i*N+j)=0;
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
for(int k=0,l=0;k<N,l<N;k++,l++)
{
*(int*)(MatrixC+i*N+j) += (*(int*)(Matrix+i*N+k))*(*(int*)(MatrixB+l*N+j));
}
}
}
}
void main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},c[3][3];
multiple_matrix(a,a,c,3);
}