c语言(数组与字符串)
《ASP.NET 3.5网站开发从入门到精通》 第7章数组与字符串 第7章数组与字符串 第7章数组与字符串 第7章数组与字符串 第7章数组与字符串 第7章数组与字符串 第7章数组与字符串 第7章数组与字符串 7.1 数组概述 到目前为止,所使用的变量都有一个共同的特点,就是每个变量只能存储一个数值,比如定义三个变量num,money和cname,代码如下: int num; doulbe money; char cname; 这三个变量属于不同的数据类型,所以只能一次定义一个变量,如果这三个量属于同一种数据类型,就可以使用数组一起定义多个变量。 7.1 数组概述 数组表示的是一组数据类型相同的数,这组数当中的每一个元素都是一个独立变量,数组就是用来存储和处理一组相同类型的数据的。 7.2 一维数组 7.2.1 一维数组的定义 7.2.2 一维数组的初始化 7.2.3 一维数组元素的操作 7.2.4 数组作为参数传递 7.2.5 一维数组的应用举例 7.2.1 一维数组的定义 一维数组定义的一般形式为: 类型说明符 数组名[常量表达式]; 例如: int code[5]; 或者 #define NUM 5 int code[NUM]; 上述两种形式都正确的定义一个名称code的整型数组,该数组含有5个整型变量,这5个整型变量的下标,依次是:code[0]、code[1]、code[2]、code[3]和code[4]。 在C语言当中,数组的下标总是从0开始记的,而不是从1开始,这一点大家需要格外注意,特别是最初接触到数组。 7.2.1 一维数组的定义 使用code数组存储上节中建立的数据表中的序号列中的数据,如下表所示 7.2.1 一维数组的定义 表中数组code中元素code[0]是一个整型变量,它存储的是数据5,它在使用上一般的变量没有区别,比如int x=5,code[0]与x不同的地方只是code[0]采用了数组名和下标组合的形式。 比如下面的代码: printf(“code[0]=%d,code[4]=%d\n”,code[0],code[4]); 输出结果是 code[0]=5,code[4]=2 又如下面的代码: for(int i=0;i<5;i++) printf(“code[%d]=%d\n”,code[i]); 输出的结果是 code[0]=5 code[1]=3 code[2]=1 code[3]=4 code[4]=2 7.2.1 一维数组的定义 1. 数组定义的说明 ⑴ 数组使用的是方括号[ ],不要误写成小括号( )。 int name(10);/*是错误的形式*/ ⑵ 数组命名必须按照命名规则。 ⑶ 数组下标总是从0开始的,以上面定义的code数组为例,数组的元素下标的范围是从0到4,而不是从1到5,大于4的下标会产生数组溢出错误,下标更不能出现负数。 code[0]/*是存在的,可以正确的访问*/ code[4]/*是存在的,可以正确的访问*/ code[5]/*是不存在的,无效的访问*/ code[-1]/*是错误的形式*/ 7.2.1 一维数组的定义 ⑷ 定义数组时,code[5]中括号中的数字5,表示的是数组中元素的总数,使用数组时,code[2]=1中括号中的数值是下标,表示的是使用的数组中哪一个元素。 ⑸ 在定义数组元素总数时,如上例中的5或者NUM,在数组的定义时,要求括号中数据一定要是常量,而不能是变量,但是数组定义后,使用该数组的元素时,下标可以是常量,也可以是变量,或者表达式。 7.2.1 一维数组的定义 int number=5; int code[number];/*在编译这样代码时,编译器会报错*/ 假如code数组已经正确定义,下面的使用是正确的 int n = 3; code[n] = 100; /*等价于code[3]=100; */ code[n+1]=80;/*等价于code[4]=80; */ code[n/2]=65;/*等价于code[1]=65,这个是需要注意的,下标只能是整数,如果是浮点数编译器会舍弃小数位取整数部分*/ code[2]=code[1] + n; code[0]=99.56/*等价于code[0]=99,因为code[0]本就是一个整型变量,赋值时数据类型转换,直接把浮点数舍弃小数位后赋值给了code[0]*/ 7.2.1 一维数组的定义 2. 其他类型数组的定义 ⑴ 整型数组的定义 int array[10];/*包含10个整型元素的数组名为array的数组,下标范围从0到9*/ ⑵ 浮点型数组的定义 float