一维数组
定义:
1、数组是把具有相同类型的若干变量按有序的形式组织起来的集合。 2、数组是一组用来存放多个相同类型的数据集合,该集合中的每一个成员称为数组元素。
3、通过数组名和一个下标唯一确定的称为一 维数组。
4、数组在使用前必须先定义。
举例:
float a[10];数组a中存贮了10个数组
定义格式:
类型标识符 数组名[整型常量表达式];
int score[5];
数组是整型,长度为5,包含5个数据
说明:
(1) "类型标识符” 表示数组中每个元素的数据类型。 即int
(2)“数组名” 应是合法的用户标识符。score 数字字母下划线,首字母非数字,非关键字
int a-1[5]; 不合法,有一个短横杠
(3)“整型常量表达式”用方括号括起来。
int b(5);
/*错误,不能使用圆括号*/
(4) "整型常量表达式”表示数组长度(数组元素个数),下标下限为0,下标上限为"整型常量表达式-1”。
int b[5];
数组b有5个元素,分别是: b[0]、 b[1]、 b[2]、b[3]、b[4]
(5) [ ]中可为普通常量或符号常量,不能为变量。
(6)为数组分配连续的存储空间
数组名代表数组在内存中存放的首地址(即数组第一个元素在内存中的存储地址)。
int a[10];
一个整型变量占4个字节,10个占据40个字节
初始化:
定义:
对一维数组元素赋初值,即初始化。
情况一:
定义数组的同时对数组全部元素赋初值
将各元素的初值顺序放在{}内,数据间逗号分隔。字符常量要用单引号括起来
10是可以省略的,{}包含多少数据元素,长度为多少,默认对全部元素进行赋初值
情况二:
对数组部分元素赋初值
后7个元素系统赋初值为0.0
10是不可以省略的
情况三:
如果不进行初始化,随机分配数值
例题:
例题一:数组定义及初始化 :
int a[3]={};
该数组各个元素的值分别为多少?
虽然{}并没有数值,但是它具备初始化的格式(={}),如果一个值也没有的话,那么所有的数据值默认为0
a[0]=0 a[1]=0 a[2]=0
不进行初始化如int a[3];
则各元素的值是随机值。
例题二:数组定义及初始化 :
int a[3]={1};
该数组各个元素的值分别为多少?
a[0]=1 a[1]=0 a[2]=0
如果不赋值,元素默认值为0
引用:
方法:
引用数组中的元素可通过使用数组名及下标来实现。
引用格式:
数组名[下标]
注意:
①下标必须从0开始,上限是 (数组长度-1) ;
例如:数组int a[10]中10个元素的引用:
a[0] a[1] a[2]........a[9]
②下标可以是常量、变量或者表达式
例如:数组int a[10]中元素的引用:
a[1] a[i] a[i+1]
③数组同变量一样,必须先定义后引用,原类型能出现的位置都能使用。
a[5]=6; a[7]=a[5]++;
a[6]=3; a[0]=a[5]+a[7]-a[2*3];
④数组名表示数组的首地址。a和&a[0]的值相等
scanf(" %d",&a[0]); //引用a[0]元素, 通过键盘为其输入值。
scanf("%d", a);
⑤在C语言中只能逐个使用下标变量引|用数组元素,而不能一次引用整个数组。
如:输出int a[10]中的元素:
printf( "%d" ,a[0]);
printf(“%d" ,a[1]);
printf(“%d" ,a[2]);
......
printf(“%d”,a[9]);
如:输出int a[10]中的元素:
for(i=0;i<=9;i++)
printf(“%d" ,a[i]);
而不能用一个语句输出整个数组,只能输出该数组的首地址。
printf(“%d" ,a);
例题:
例题一:
如: int i[4]={1,2,3,4};
该数组名称为i;
数组类型为int,数组中元素的数据类型为int;
数组长度为4,即一共4个元素;
数组下标从0开始到数组长度减1,即从0—3;
数组中每- -个元素可以用下标访问:
即i[0] i[1] i[2] i[3]
每一个元素的值为:
i[0]=1 i[1]=2 i[2]=3 i[3]=4
典型错误:
数组的非法操作:
1、用一个已经初始化的数组对另一个数组赋值
原因:不能一次性引用整个数组,只能一个元素一个元素的引用
2、对数组进行整体输入输出
原因:要结合循环,这样只能输出该数组的首地址
3、数组与数组不能进行比较
原因:不能一次性引用整个数组,只能一个元素一个元素的引用
4、数组与数组不能进行运算
原因:不能一次性引用整个数组,只能一个元素一个元素的引用