C语言基本教程-数组(内含“简易学生成绩查询系统”算法).docVIP

C语言基本教程-数组(内含“简易学生成绩查询系统”算法).doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.1 一维数组 ??? 5.1.1 向函数传递一维数组?? ??? 5.1.2 字符串使用的一维数组 5.2 二维数组 ??? 5.2.1 二维数组的一般形式 ??? 5.2.2 字符串数组 5.3 多维数组 5.4 数组的初始化 ??? 5.4.1 数组初始化 ??? 5.4.2 变长数组的初始化 5.5 应用程序举例 ??? 数组是一个由若干同类型变量组成的集合,引用这些变量时可用同一名字。数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维的,也可以是多维的。 5.1 一维数组 ??? 一维数组的一般说明形式如下: ??? type-specifier var_name [size]; ??? 在C语言中,数组必须显示地说明,以便编译程序为它们分配内存空间。在上式中,类型说明符指明数组的类型,也就是数组中每一个元素个数,一维数组的总字节数可按下式计算: sizeof( 类型) *数组长度= 总字节数 [例5-1] 将数字0到9装入一个整型数组。 main( ) { ??? int x[10]; /* 定义包含1 0个整型数的数组,引用为x [ 0 ] ,x [ 1 ] . . . x [ 9 ] * / ??? int t ; ??? for (t=0; t10;++t) x[t]=t; } ??? C语言并不检验数组边界,因此,数组的两端都有可能越界而使其它变量的数组甚至程序代码被破坏。在需要的时候,数组的边界检验便是程序员的职责。例如,当使用gets( )接收字符输入时,必须确认字符数组的长度足以存放最长的字符串。 ??? 一维数组在本质上是由同类数据构成的表,例如,对下列数组a : ??? char a[7] 图5 - 1说明了数组a在内存中的情形,假定起始地址为1000。 5.1.1 向函数传递一维数组 ??? 将一维数组传递给函数时,把数组名作为参数直接调用函数即可,无需任何下标。这样,数组的第一个元素的地址将传递给该函数。C语言并不是将整个数组作为实参来传递,而是用指针来代替它。例如,下面的程序将数组i的第一个元素的地址传递给函数func1( )。 main( ) { ??? int i[10]; ??? func1(i); /*函数调用,实参是数组名* / ??? . . . } ??? 函数若要接收一维数组的传递,则可以用下面的二种方法之一来说明形式参数; 1) 有界数组;2) 无界数组。例如,函数func1 ( )要接收数组i可如下说明: ??? func1(str) ??? char str[10]; /* 有界数组,数组的下标只能小于或等于传递数组的大小。* / ??? { ???? ??? . ???? ??? . . ??? } ??? 也可说明为: ??? func1(str) ??? char str[ ]; / * 无界数组* / ??? { ??????? . ??????? . . ??? } ??? 这二种说明方法的效果是等价的,它们都通知编译程序建立一个字符指针。第一种说明使用的是标准的数组说明;后一种说明使用了改进型的数组说明,它只是说明函数将要接收一个具有一定长度的整型数组。细想就会发现,就函数而言,数组究竟有多长并无关紧要,因为C语言并不进行数组的边界检验。事实上,就编译程序而言,下面的说明也是可行的。 func1 (str); int str[32]; { ??? . . . } 因为编译程序只是产生代码使函数func1( )接收一个指针,并非真正产生一个包含3 2个元素的数组。 5.1.2 字符串使用的一维数组 ??? 显然,一维数组的最普通的用法是作为字符串。在C语言中,字符串被定义为一个以空字符终结的字符数组。空字符以‘ \ 0’来标识,它通常是不显示的。因此,在说明字符数组时,必须比它要存放的最长字符串多一个字符。例如,假如要定义一个存放长度为1 0的字符串的数组s,可以写成: ??? char s[11]; ??? 这样就给字符串末尾的空字符保留了空间。 ??? 尽管C语言并不把字符串定义为一种数据类型,但却允许使用字符串常量。字符串常量是由双引号括起来的字符表。例如,下面两个短语均为字符串常量: ??? hello there ??? this is a test ??? 不必向字符串的末尾加空字符, C编译程序会自动完成这一工作。 ??? C语言支持多串操作函数,最常用的有: ??? 名字功能 ??? strcpy(s1 s2) 将s2拷贝到s1 ??? strcat(s1 s2) 将s 2连接到s 1的末尾 ??? strlen(s1) 返回s1的长度 ??? strcmp(s1,s2) 若s

您可能关注的文档

文档评论(0)

hong333666 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档