6.4多维数组与指针.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.4多维数组与指针.ppt

6.4 多维数组与指针 ; 不仅有一维数组,还有多维数组。 一维数组可对应数学中的向量,而二维数组可对应矩阵。例如:int mat[3][4];;二维数组在内存中的存储; 这就是所谓的按行排列。 在高级语言中将多维数组在内存中的排列分为按行和按列两种方式,C/C++用按行方式,Fortran 用按列方式。 有了确定的按行排列关系后可以算出多维数组任一元素在内存的位置。 int mat[3][4];// 设mat的每个元素占内存b个字节,则mat [ i ][ j ] 的地址为: 数组的首地址+(i*4+j)*b; ;1、可用嵌套一维数组初始化进行: int matrix[3][4]={{1,3,5,7},{2,4,6,8},{3,5,7,11}}; 第一个花括号依次赋给数组 matrix 的第一行matrix[0] ,第二个花括号内数据赋给第二行 matrix[1],依此类推。 2、也可以按数组元素存储次序列出各元素的值,并只用一个花括号:int matrix[3][4]={1,3,5,7,2,4,6,8,3,5,7,11}; 3、还可以对部分元素赋初值,没有明确初值的元素清0: int matrix[3][4]={{1,3},{2,4},{3,5,7}}; 等效于:int matrix[3][4]={{1,3,0,0},{2,4,0,0},{3,5,7,0}}; 4、最后还可由初始化数据来确定数组最高维,如 int matrix[ ][4]={1,3,5,7,2,4,6,8,3,5,7,11}; 结果定义的matrix是三行四列的数组。也可以 int matrix[ ][4]={{1,3},{2,4},{3,5,7}}; 同样也是三行四列。注意这里只能最高维缺省。 ; C/C++ 中的二维数组的定义是:以一维数组作为元素构成的数组;多维数组的定义都是如此,例如三维数组的数组元素是一个个的二维数组,依此类推。也就是说,多维数组定义用的是一个嵌套的定义。;#include iostream.h #include iomanip.h inverse(int mat1[3][6], int mid[6][3]); multi(int mid[6][3], int mat2[3][4], int result[6][4]); void output(int result[6][4]); void main(){ int middle[6][3], result[6][4]; int matrix1[3][6]={8,10,12,23,1,3,5,7,9,2,4,6,34, 45,56,2,4,6}; int matrix2[3][4]={3,2,1,0,-1,-2,9,8,7,6,5,4}; inverse(matrix1,middle); multi(middle,matrix2,result); output(result); return;};;void inverse(int mat1[3][6],int mid [6][3]) { int i,j; //转置矩阵 for (i=0;i3;i++) for (j=0;j6;j++) mid [ j ] [ i ]=mat1[ i ] [ j ]; return; } multi(int mid[6][3],int mat2[3][4],int result[6][4]) { int i,j,k; //矩阵乘法 for (i=0;i6;i++){ for (j=0;j4;j++) { result[i][j] = 0; for (k=0;k3;k++) result[i][j]+=mid[i][k]*mat2[k][j]; }} return; };;14;int maxmin(int a,int b,int c){ if(abbc) return -1; else if(abbc) return 1; else return 0;} //b为最大返回1 ,最小返-1,其他为0 void main (void){ int i,j,k,l; for(i=1;

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档