数组和指针.ppt

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

第七章 数组和指针 数组: 是按一定格式排列起来的一系列具有同一属性的项目。 例如: 向量、矩阵、立体矩阵等。 a11 a12 a13 a21 a22 a23 a31 a32 a33 数组名: 表示群体的共性(具有同一种数据类型) 下标: 表示个体的个性(各自占有独立的单元) 7.1 数组及数组元素 7.1.1 一维数组 一维数组的定义方式: 类型说明符 数组名[常量表达式]; 数组名遵循标识符命名规则 常量表达式表示元素的个数,即数组长度。 例如:int a[10]; 数组元素的表示形式:数组名[下标] 其中,下标:是整型常量或整型表达式。对于任何数组,下标都从0开始。 [例7.1]用气泡法完成对10个数从小到大排序。 第一趟扫描找到了最小的数存入a[0],其过程如下: a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] main() { int a[11],i,j,t; printf(“input ten numbers:\n”); for(i=1;i11;i++) scanf(“%d”,a[i]); printf(“\n”); for(i=1;i10;i++) for(j=10;ji;j--) if(a[j-1]a[j]) { t=a[j];a[j]=a[j-1];a[j-1]=t;} printf(“the sorted numbers:\n”); for(i=0;i11;i++) printf(“%d”,a[i]); } 上述程序有许多值得改进的地方。 (1)在9趟由底向上的扫描中,可能最后几趟已无任何交换发生,程序应能做到,一旦发现某趟扫描中无任何交换时就会终止; (2)在每趟扫描中,上趟扫描中最后一次交换的位置k是至关重要的,因为当jk时,将再也没有任何交换发生,从而应该在此结束此趟扫描; (3)为使算法具有对称性,扫描的方向有两种可能的选择,一是使轻气泡上浮,一是使重气泡下沉。 例:用选择法排序。即先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中最小的数与a[1]对换;每比较一轮,找出一个未经排序的数中最小的一个。共应比较9轮。 7.1.2 二维数组 二维数组的一般定义形式为: 类型说明符 数组名[常量表达式][常量表达式]; 例如:float a[3][4]; 二维数组元素的表示形式为: 数组名[下标1][下标2] 下标1:称为行下标/下标2:称为列下标 [例7.2]将4×4的矩阵转置并输出。 main() {float a[4][4],t; int i,j for(i=0;i4;i++) for(j=0;j4;j++) scanf(“%f”,a[i][j]); for(i=1;i4;i++) for(j=0;ji;j++) {t=a[i][j];a[i][j]=a[j][i]; a[j][i]=t;} for(i=0;i4;i++) {for(j=0;j4;j++) printf(“%f”,a[i][j]); printf(“\n”);} } 7.1.3 多维数组 多维数组:多于二维的数组。 多维数组的定义、数组元素的引用:与二维数组类似,只是需要相应维数的下标。 例如: int cube[5][6][4]; /*三维数组*/ float data[3][4][9][2];/*四维数组*/ cube[0][1][3]=20; data[1][0][5][1]=0.0; 7.2 数组的存储表示 1.同一个数组中的所有元素占用一组连续的存储空间; 2.数组的存储分配按行进行; 3.数组名字表示该数组的首元素地址。 对于一维数组而言,各元素按下标次序依次存放, 如a[0],a[1],a[2],…等等。且有: a[0]: a[1]: a[2]: 7.2 数组的存储表示 数组中任一元素a[i]的地址可表示为: a[i]=a+i*sizeof(元素类型) 其中sizeof(元素类型):求每个元素占用存储空间的字节数。例如:char ch[10];int a[10]; 设 ch=FFE0,a=FFEA 则 ch[0]=FFE0+0*1=FFE0 a[0]=FFEA+0*2=FFEA ch[1

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档