C语言一维数组的定义和使用(新手必看)
C 语言中的一维数组,是用于存储顺序排列的数据的集合,它的一般形式如下:
例如,定义一个长度为 10 的字符型数组,代码如下:
例如,定义一个长度为 5 的整型数组,代码如下:
例如,定义一个长度为 20 的浮点型数组,代码如下:
对于定义数组,还有以下几点需强调:
1) 同一个数组的所有元素的数据类型都是相同的。
2) 数组名的书写规则应按照标识符的规定定义。
3) 允许在同一个类型说明中说明多个数组和多个变量,例如:
4) 方括号中的常量表达式表示数组元素的个数,如 number[5]表示数组 number 有 5 个元素。其索引从 0 开始,5 个元素分别为 number[0]、number[1]、number[2]、number[3]、number[4]。
5) 数组名不能与其他变量名相同,例如:
6) 方括号里可以用符号常量或常量表达式来表示元素的个数,不能用变量来表示元素的个数,例如:
在 C语言中,对一维数组的初始化可以用以下几种方法实现。
1) 在定义数组时直接对数组元素赋初值,例如:
2) 只给一部分元素赋值,未赋值的部分元素值为 0,例如:
3) 在对全部数组元素赋初值时不指定数组长度。上面 3 个例子在定义数组时,都在数组变量后指定了数组的元素个数。C语言还允许在定义数组时不指定长度,例如:
注意,如果在定义数组时规定定义的长度为 10,就不能使用省略数组长度的定义方法,而必须写成:
前面介绍过数组的索引是从 0 开始的,也就是说索引为 0 表示的是第 1 个数组元素。因此第 3 个元素的索引是 2,所以这句代码引用的是数组 iArray 的第 3 个元素。
在 C语言中只能逐个地使用索引变量,而不能一次引用整个数组。例如,逐个输出数组元素,代码如下:
【实例】使用一维数组输出某高中某班级前 5 名的总成绩。
类型说明符 数组标识符[常量表达式];有以下几点说明:
- 类型说明符表示数组中的所有元素的类型;
- 数组标识符表示该数组型变量的名称,命名规则与变量名的一致;
- 常量表达式定义数组中存放的数据元素的个数,即数组长度。
例如,定义一个长度为 10 的字符型数组,代码如下:
char cArray[10];上述代码中的 char 为数组元素的类型,而 cArray 表示的是数组变量名,括号中的 10 表示的是数组中包含的元素个数,索引从 0 开始,到 9 结束。
例如,定义一个长度为 5 的整型数组,代码如下:
int number[5];
例如,定义一个长度为 20 的浮点型数组,代码如下:
float decimal[20];
对于定义数组,还有以下几点需强调:
1) 同一个数组的所有元素的数据类型都是相同的。
2) 数组名的书写规则应按照标识符的规定定义。
3) 允许在同一个类型说明中说明多个数组和多个变量,例如:
int i, j, k, n, m1[10], m2[20];
4) 方括号中的常量表达式表示数组元素的个数,如 number[5]表示数组 number 有 5 个元素。其索引从 0 开始,5 个元素分别为 number[0]、number[1]、number[2]、number[3]、number[4]。
5) 数组名不能与其他变量名相同,例如:
int cArray; float cArray[10];这种定义数组的方式是错误的。
6) 方括号里可以用符号常量或常量表达式来表示元素的个数,不能用变量来表示元素的个数,例如:
#define AI 3 //定义符号常量 int cArray[1+2]; //定义数组 int number[8+AI]; //定义数组上面这段代码定义的数组是合法的。
int i=5; int number[i];上面这段代码定义的数组是错误的。
一维数组的初始化
一维数组的初始化就是给一维数组赋予初值。初始化的一般格式如下:类型说明符 数组标识符[常量表达式]={值1,值2,值3,值4...};其中的
{}
中间的各个值就是各元素的初值,各值之间用英文逗号隔开,定义结束后,在最后用英文分号结束,例如:
int number[5]={1,2,3,4,5};上述代码表示:number[0]=1, number[1]=2, number[2]=3, number[3]=4, number[4]=5。
在 C语言中,对一维数组的初始化可以用以下几种方法实现。
1) 在定义数组时直接对数组元素赋初值,例如:
int iArray[8]={1,2,3,4,5,6,7,8};该方法是将数组中的元素值依次放在一对花括号中。经过上面的定义和初始化之后,数组中的元素 iArray[0]=1、iArray[1]=2、iArray[2]=3、iArray[3]=4、iArray[4]=5、iArray[5]=6、iArray[6]=7、iArray[7]=8。
2) 只给一部分元素赋值,未赋值的部分元素值为 0,例如:
int iArray[8]={1,2,3};数组变量 iArray 包含 8 个元素,不过在初始化时只给出了 3 个值。数组中前 3 个元素的值对应括号中给出的值,数组中没有得到值的元素被默认赋值为 0,即数组中的元素 iArray[0]=1、iArray[1]=2、iArray[2]=3、iArray[3]=0、iArray[4]=0、iArray[5]=0、iArray[6]=0、iArray[7]=0。
3) 在对全部数组元素赋初值时不指定数组长度。上面 3 个例子在定义数组时,都在数组变量后指定了数组的元素个数。C语言还允许在定义数组时不指定长度,例如:
int iArray[]={1,2,3,4};这一行代码的花括号中有 4 个元素,系统会根据给定的初始化元素值的个数来定义数组的长度,因此该数组变量的长度为 4。
注意,如果在定义数组时规定定义的长度为 10,就不能使用省略数组长度的定义方法,而必须写成:
int iArray[10]={1,2,3,4};
一维数组的使用
数组定义完成后就要使用该数组,可以通过引用数组元素的方式使用该数组中的元素。数组元素表示的一般形式如下:数组标识符[索引]其中的索引可以是整型常量和整型表达式。如果为小数,C 编译器会自动取整,例如:
int iArray[8] = {1,2,3,4,5,6,7,8}; // 定义数组 iArray[2]; // 引用数组元素上面这段代码的第 2 行是引用数组元素,其中 iArray 是数组变量的名称,2 为数组的索引。
前面介绍过数组的索引是从 0 开始的,也就是说索引为 0 表示的是第 1 个数组元素。因此第 3 个元素的索引是 2,所以这句代码引用的是数组 iArray 的第 3 个元素。
在 C语言中只能逐个地使用索引变量,而不能一次引用整个数组。例如,逐个输出数组元素,代码如下:
int i; int iArray[8] = {1,2,3,4,5,6,7,8}; // 定义数组 for(i=0;i<8;i++){ printf("%d\n",iArray[i]); }上面这段代码实现的功能是输出数组 iArray 的各个元素,使用 iArray[i] 引用数组元素是合法的。
int iArray[8] = {1,2,3,4,5,6,7,8}; // 定义数组 printf("%d\n",iArray); // 不能输出数组元素上面这段代码也是输出数组的各元素,但是它不是逐个输出,而是用一条语句输出,这样就是不合法的,不能输出数组的各个元素。
【实例】使用一维数组输出某高中某班级前 5 名的总成绩。
#include<stdio.h> //包含头文件 int main() //主函数main() { int i; int grade[5]; //定义数组 printf("请输入前5名学生的成绩:\n"); for (i = 0; i < 5; i++) //输入学生成绩 { printf("第%d名成绩:",i+1); scanf("%d",&grade[i]); } printf("前5各学生的成绩如下:\n"); //输出学生成绩 for (i = 0; i < 5; i++) { printf("第%d名的成绩是:%d\n", i + 1, grade[i]); } return 0; }运行结果为:
请输入前5名学生的成绩:
第1名成绩:100
第2名成绩:90
第3名成绩:95
第4名成绩:80
第5名成绩:70
前5各学生的成绩如下:
第1名的成绩是:100
第2名的成绩是:90
第3名的成绩是:95
第4名的成绩是:80
第5名的成绩是:70