C和指针笔记——数组的乘法

 1 //code by zzlpp
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 void matrix_multiply( int *m1,int  *m2,int *r,
 6                      int const x,int const y,int const z );
 7 
 8 
 9 int main( void )
10 {
11     //初始化原始矩阵
12     int m1[3][1]={1,2,3},
13         m2[1][3]={3,2,1},
14         r[3][3]={{},{},{}};
15 
16     int i,
17         j;
18     //调用函数
19     matrix_multiply(*m1,*m2,*r,3,1,3);
20     //打印得到的矩阵
21     for ( i=0;i<3;i++ )
22     {
23         for ( j=0;j<3;j++ )
24         {
25             printf("%d ",r[i][j]);
26         }
27         printf("\n");
28     }
29     system( "pause" );
30     return 0;
31 }
32 
33 void matrix_multiply( int *m1,int *m2,int *r,
34                      int const x,int const y,int const z )
35 {
36     int row,            //对应x
37         column,            //对应y
38         direction;        //对应z
39     int *m1_cpy,
40         *m2_cpy;
41     for ( row=0;row<x;row++ )
42     {
43         for ( direction=0;direction<z;direction++ )
44         {
45             m1_cpy=m1+row*y;
46             m2_cpy=m2+direction;
47             for ( column=0;column<y;column++ )
48             {
49                 *r+=(*m1_cpy)*(*m2_cpy);
50                 m1_cpy+=1;
51                 m2_cpy+=direction;
52             }
53             r++;
54         }
55     }
56 }

  这个代码主要是熟悉多维数组,在函数传递的时候要注意方法,同时在函数中操作多维数组也需要方法,这里如果使用下表引用是行不通的,必须设置一个专门的变量当做下表使用(如文中的row,column,direction)。当然我的认识是片面的,多多海涵。

 

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。