一维数组变量的定义、初始化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。所以,定义数组并初始化时,若省略数组元素个数的定义,则初值必须完全给出。

相关文档
最新文档