c语言 乘法 指针,C语言矩阵乘法(指针实现)

d1b10154b8628ecfffa6500e87a32f20.jpe

这是C和指针书上的一道题,充分体现了指针实现数组操作的过程

void matrix_multiply( int *m1, int *m2, int *r,

int x, int y, int z )

{

register int *m1p; //寄存器变量提高运行速度,在这可有可无

register int *m2p;

register int k;

int row;

int column;

/*

* 外层的两个循环逐个产生结果矩阵的元素。由于这是按照存在顺序

* 进行的。我们可以通过对r进行间接访问来访问这些元素。

*/

for( row=0; row

{

for( column=0; column

{

/*

* 计算结果的一个值。这是通过或得指向m1和m2的合适元素的指针,

* 当我们进行进行循环时,使他们前进来实现的。

*/

m1p = m1 + row * y;

m2p = m2 + column;

*r = 0;

for( k=0; k

{

*r += *m1p * *m2p; //r数组元素的值

m1p += 1; //m1数组的行

m2p += z; //m2数组的列

}

/* r 前进一步,指向下一个元素 */

r++;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值