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

这是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++;

}

}

}

你可能感兴趣的