【例7.3】有如下程序:
int a[3]={1,2,3}是数组的初始化。所谓初始化,是指在定义时指定初始值,编译器把初值赋给数组变量。
1.在编译阶段赋初值
1)对全部数组元素赋初值
例如:
int a[6]={1,2,3,4,5,6};
数组元素的个数和花括号中初值的个数是相同的,并且从左到右花括号中初值依次赋给每个数组元素。即a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6。
当给数组全部元素赋初值时,可以省略数组长度。如:
int a[]={10,20,30,40,50};
系统将根据赋初值的个数确定数组长度。上述大括号内共有5个初值,说明数组a的元素个数为5,即数组长度为5。
2)可以只给一部分元素赋初值
例如:(www.xing528.com)
int a[10]={0,1,2,3,4};
定义a数组有10个元素,但花括号中只提供了5个初值,表示只给前5个数组元素a[0]~a[4]赋初值,后面5个元素a[5]~a[9] 未指定初值,系统自动赋0。但若定义a数组为int a[10]={0};,则系统默认全部元素初值为0。
2.在运行阶段赋初值
3.注意事项
当程序不给数组指定初始值时,编译器作如下处理:(1)编译器自动把静态数组的各元素初始化为0。
(2)编译器不为动态数组自动指定初始值。
(3)如果全部元素均指定初值,定义中可以省略元素的个数。
例如:[static] int a[5] = {1,2,3,4,5};可以写为:[static] int a[ ] = {1,2,3,4,5};
int a[10]={0};等价于 static int a[10];但不等价于int a[10];
int a[5]={1,2};等价于 int a[5]={1,2,0,0,0};但不等价于int a[ ]={1,2};
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。