C語言,二級指標,矩陣操作
阿新 • • 發佈:2019-01-23
這麼基礎的操作,都忘光了....
二級指標引數傳遞之後,一級解引用不知道要解成什麼型別,就會報錯,所以需要(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); }