• 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("
    ");
    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)。当然我的认识是片面的,多多海涵。

      

  • 相关阅读:
    各种类型的Dialog
    短信验证码的使用
    监听开机广播
    实现点击两次返回键退出
    Android 遮罩层效果--制作圆形头像
    Native方法的使用
    如何给数字添加分隔符
    自定义Toast
    Android px、dp、sp之间相互转换
    android:scrollbarStyle属性及滚动条和分割线覆盖问题
  • 原文地址:https://www.cnblogs.com/zzlpp/p/4550597.html
Copyright © 2020-2023  润新知