matmult.c

来自「C和指针非常好的一本书.里面的有许多代码可以借鉴.」· C语言 代码 · 共 45 行

C
45
字号
/*
** Multiply two matrices together.
*/

void
matrix_multiply( int *m1, int *m2, register int *r,
    int x, int y, int z )
{
	register int	*m1p;
	register int	*m2p;
	register int	k;
	int	row;
	int	column;

	/*
	** The outer two loops go through the solution matrix element
	** by element.  Because this is done in storage order, we
	** can access these elements using indirection on r.
	*/
	for( row = 0; row < x; row += 1 ){
		for( column = 0; column < z; column += 1 ){
			/*
			** Compute one value in the result.  This is
			** done by getting pointers to the proper
			** elements in m1 and m2, and then advancing
			** them as we go through the loop.
			*/
			m1p = m1 + row * y;
			m2p = m2 + column;
			*r = 0;

			for( k = 0; k < y; k += 1 ){
				*r += *m1p * *m2p;
				m1p += 1;
				m2p += z;
			}

			/*
			** Advance r to point to the next element.
			*/
			r++;
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?