1. 程式人生 > >C語言,二級指標,矩陣操作

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);
}