- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言和
5.1 一维数组 5.1.2一维数组与指针 指针提供给我们操作地址的方式。因为计算机机器指令操作和管理都是计算机的地址,指针提供了一种非常接近直接管理计算机机器表达的方式;所以,我们可以使用指针提高编程效率,特别是数组,指针提供了一种高效的处理方法。从本质上讲,数组只不过是指针的伪装使用。 数组是C编译器分配一组地址连续的内存单元;下面定义的整型数组 int a[5]; C编译器将为数组a[5]分配5个存储整型数据的内存单元,数组名a也同时代表数组a[5]的首地址。 算法:输入4个整数a0,a1, a2, a3将它们从小到大 按升序排序后输出。 一般地,设: n个数为 a[0], a[1], a[2],……, a[n-2], a[n-1], 则 n 个数的起泡排序算法可用for循环表示为: for(i=0;i=n-2;i++) for(j=0;j=n-2-i;j++) if(a[j] a[j+1]) 将a[j]的值与a[j+1]的值互换; 【例5-2-1】 起泡法排序的程序: 选择法排序的思路是: 先经过3次比较找出a[0]、a[1]、a[2]和a[3]中的最小数并与a[0]对换,再经过2次比较找出a[1]、a[2]和a[3]中的最小数并与a[1]进行对换,最后,进行一次比较,选出a[2] 和a[3]中的最小数与a[2]进行对换。 一般地,对n个数进行排序,共需进行n-1轮比较,在第i轮要经过n-i次两两比较,从而在数组未经排序的n-i+1个数中找出最小数并与a[i-1]对换。与起泡法相比,选择法只是在每轮比较结束后,根据需要,作一次对换操作。在数据个数较多的情况下,相比起泡法有更高的效率。 5.2 字符数组与字符串 5.2.1 字符数组与指针 1.字符数组 字符数组的定义和使用与整型数组的使用类似,仅仅是存储的数据类型为字符型而已。下面给出简单示例: char c[10]={ c, , p, r, o, g, r, a, m}; 初始化后各元素的值为: c[0]的值为 c c[1]的值为 (一个空格) c[2]的值为 p c[3]的值为 r c[4]的值为 0 c[5]的值为 g c[6]的值为 r c[7]的值为 a c[8]的值为 m 其中c[9]没有初始化赋字符,此处默认赋值为\0 字符数组也可以通过初始化定义长度。如: char c[] = { c, , p, r, o, g, r, a, m}; 这时c数组的长度自动定为9。 5.2.2 运用字符串处理函数编程 5.3 指针的运算与比较 5.3.1指针的运算 指针运算总结如下 赋值 求值或者取值 取地址 指针与整数相加减 指针自增或者自减 求差值 同学们请参照教材5.3.2 5.3.3数组名与指针 数组名和指针是不同的,其对比在于: (1)数组名的内涵在于其指代实体是一种数据结 构,这种数据结构就是数组。 (2)数组名的外延在于其可以转换为指向其指代 实体的指针,而且是一个指针常量。 (3)指向数组的指针则是另外一种变量类型(在 TC3.0平台下,长度为2),仅仅意味着数组 的存放地址。 5.4 多维数组 C语言中除了一维数组,还允许定义任意维度的数组。现实中经常使用的是一维和二维数组,而三维数组以及更多维的数组并不常用,此外指针数组被用来取代多维数组使用的情况很普遍,因此,我们主要介绍二维数组以及指针数组。 5.4.1 二维数组 二维数组的声明方法类似于一维数组,如下所示: int M[4][5]; 这个语句声明了一个拥有4行、5列,共20个元素的二位数组,数组的每一个元素都是整型数。 小 结 数组是程序设计中最常用的数据结构。数组可分为数值数组(整数组,实数组),字符数组以及后面将要介绍的指针数组,结构数组等。数组可以是一维的,二维的或多维的。数组类型说明由类型说明符、数组名、数组长度(数组元素个数)三部分组成。数组元素又称为下标变量。 数组的类型是指下标变量取值的类型。对数组的赋值可以用数组初始化赋值,输入函数动态赋值和赋值语句赋值三种方法实现。 对数值数组不能用赋值语句整体赋值、输入或输出,而必须用循环语句逐个对数组元素进行操作。 指针提供了一种用来使用地址的符号方法,采用指针能够亦
文档评论(0)