一维数组变量的定义、初始化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一维数组变量的定义
数组要占用内存空间,只有在声明了数组元素的类型和个数之后,才能为该数组分配合适的内存,这种声明就是数组的定义。对一维数组来说,其定义的一般形式为:
<类型标识符><数组名>[<整型常量表达式>]
其中,类型标识符指数组元素的类型;数组名是个标识符,是数组类型变量;整型常量表达式表示该数组的大小。
例如:
#define M20
int a[10];
float b[5];
char ch[M+6];
定义a是有10个整型元素的数组名,b是有5个浮点型元素的数组名,ch是有M+6即26个元素的字符型数组变量名。
【说明】
数组中的第一个元素的下标从0开始。
数组名( 如 a ) 表示该数组中第一个元素( 如a[0] ) 的地址,即a和&a[0]同值。数组名是地址常量。
数组定义后,使用时无越界保护;
数组定义中的常量表达式中可以包含常量和符号常量,但不能包含变量。
例如,以下定义方法是不允许的:
int n;
scanf ("%d",&n);
int b[n];
同类型数组可一起定义,用逗号隔开。
如:inta[10], b[20];
一维数组的初始化
变量可以初始化,一维数组也可以在定义的同时为各数组元素赋初值。
一维数组初始化的形式:
数据类型数组名[整型常量表达式]={初值1,初值2,……};
数组中有若干个数组元素,可在{ }中给出各数组元素的初值,各初值之间用逗号分开。把{ }中的初值依次赋给各数组元素。
例如,int a[4]={ 1,2,3,4};表示把初值1,2,3,4依次赋给a[0],a[1],a[2]和a[3]。相当于执行如下语句:int a[4];a[0]=1;a[1]=2;a[2]=3;a[3]=4;
注意,初始化的数据个数不能超过数组元素的个数,否则出错。int a[4]={1,2,3,4,5};是错误的。
一维数组的初始化还可以通过如下方法实现:
①只给部分数组元素初始化。
static int a[4]={ 1,2};
初始化的数据个数不能超过数组元素的个数,却可以少于数组元素的个数。上述语句只给a[0]、a[1]赋了初值,即a[0]=1;a[1]=2;那么a[2]、a[3]呢?注意到关键字static,它表示a数组的存储类型为static(静态存储)。存储类型为static的变量或数组的初值自动设置为0。所以a数组中的a[2]、a[3]的初值为0。注意,在某些C语言系统(如Turbo C)中,存储类型不是static的变量或数组的初值也是0。
若数组元素的值全为0,则可以简写为:
static int a[100]={0};
它相当于:
int a[100]={0,0,0,……,0 };
100个0
②初始化时,定义数组元素的个数的常量表达式可以省略。
int a[ ]={ 1,2,3};
若数组元素的个数定义省略,则系统根据初值的个数来确定数组元素的个数。如上例,a数组有3个数组元素:a[0]=1,a[1]=2,a[2]=3。所以,定义数组并初始化时,若省略数组元素个数的定义,则初值必须完全给出。