C语言,二级指针,矩阵操作

这么基础的操作,都忘光了....


二级指针参数传递之后,一级解引用不知道要解成什么类型,就会报错,所以需要(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);
}


猜你喜欢

转载自blog.csdn.net/lonelyrains/article/details/72666646