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

来源:互联网 发布:淘宝卖 阿里进货 知乎 编辑:程序博客网 时间:2024/06/05 20:45

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


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


原创粉丝点击