数组&指针
2018-02-02 09:52
190 查看
数组和指针
编写程序计算两个矩阵的相乘:
注意:
数组作为函数的参数怎么传递的
二维数组怎么用指针表示
编写程序计算两个矩阵的相乘:
注意:
数组作为函数的参数怎么传递的
二维数组怎么用指针表示
// matrix_multiply.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> void matrix_multiply(int *m1,int *m2,int*r,int x,int y,int z); int _tmain(int argc, _TCHAR* argv[]) { int A[][2] = { {2,-6}, {3,5}, {1,-1} }; int B[][4] = { {4,-2,-4,-5}, {-7,-3,6,7}, }; int x,y,z; x = 3; y = 2; z = 4; int *result = (int*)malloc(x*y*sizeof(int)); matrix_multiply(A[0],B[0],result,3,2,4); //打印结果 for (int m=0;m<x;m++) { for (int n=0;n<z;n++) { printf("%d\t",*(result+n)); if (n == z-1) { result = result + z; } } printf("\n"); } free(result); return 0; } /** ** int array[][] ** int *p = array[0];//p 是二维数组首地址 ** m1 是二维数组的首地址 ** m1+1 表示二维数组中第一个数后面的数(相同行) ** 若此行没有数字了,那指向下一行数字 ** 指针p将二维数组转化为排列在一行的数字 */ void matrix_multiply(int *m1,int *m2,int*r,int x,int y,int z) { int i,j,k; i = 0; j = 0; k = 0; register int* p_m1 = m1; register int* p_m2 = m2; register int* p_r = r; int sum; for (;i<x;i++) { for (k=0;k<z;k++) { sum = 0; for (j=0;j<y;j++) { int num1 = *(p_m1+j); int num2 = *(p_m2+j*z+k); sum = sum + num1 * num2; if (j == y-1) { //p_m2 = p_m2 + z; //相当于一行和一列相乘得到一个结果 *p_r = sum; p_r = p_r+1; } } } p_m1 = p_m1 + y; } }
相关文章推荐
- 数组长度为零和空引用的区别 files!=null&files.length()>0 空指针或赋空值
- 字符串&数组&指针
- 数组指针与 数组名 a和&a
- C语言面试那些事儿──一道指针与数组问题:a+1 and &a+1
- 数组&指针&函数(转自C语言习题与解析 第3版 李春葆编著)
- 【内功篇】指针&数组&字符串(五)
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 指针数组&nbsp;与数组指针
- 【知其所以然】语义"陷阱"---数组和指针
- 数组与指针---都是"退化"惹的祸
- 如何区别指针数组和数组指针 && 如何区别函数指针和指针函数
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- C语言/指针与数组&指针与函数
- C 指针&&数组
- sizeof&nbsp;数组名和指针的区别
- 【C++基础】 指针&字符串&数组
- 指针数组&nbsp;与数组指针
- 巩固C语言(十)----指针数组 & 函数指针和指针函数
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 语义"陷阱"---数组和指针