第四章笔记

4.1.1-维 数组定义与初始化
一维 数组的说明格式为:
类型标识符[表达式];
其中,“标识符”是用户自定义的数组名:“[”是数组类型符,
型”说明数组元素的类型,可以是系统提供的基本类型,也可以是用户定义的数据类型:“表达式”为整型表达式,用于指定数组无素的个数,即数组长度。维数组只有一 个下标表达式,对应于一个数学向量。
8字节,5个元素共占40字节。而s是字符型数组,每个元素占1字节。下标表达式是字符常量’a’,即整型值97,数组s共占97字节。
C++的数组下标从0开始。长度为n的数组,下标从0到n-1。以上举例说明的数组,其内存排列如图4.1所示。
数组说明的作用是在程序运行前分配内存空间。编译程序要确定数组的大小,所以类型符必须已经定义,下表表达式也必须有确定值不能为变量名,也不能为浮点型表达式。例如:
long int array【3.2】;
int max=100;
const int SIZE=100;

doble array2 [max];
int array3 [SIZE]; //正确
在数组aray1的说明中,下标表达式为浮点型常量,C++不会对它取整,因而无法决定数组长度。对于数组array2,虽然从语句序列上看变量max在数组说明语句之前已经赋值,但编译器认为,变量是无约束存储单元,可以随时赋值修改,不能由此决定数组array2的长度。而常量定义在编译阶段就被确定下来,约束为只读的存储单元,所以数组array3的说明是合法的。
说明一个数组变量后,C++数组元素的值是内存的随机状态值。数组可以在定义的同时进行初始化。形式为:以一对花括号给出常量值表,系统按下标顺序(存储顺序)对数组元素进行初始化。给定常数的个数不能超过数组定义的长度。如果给定常数的个数不足,则系统对其余元素初始化为0值。例如,有说明:
int array4[3]= { 1,2,3 };int array5[3]= {2 };int array6[10]= {0};
int rray7[3]={ 1,2,3,4 };static int array8[6];
const int aray9[5]= {0,2,4,6,8};
数组aray4定义后,有rray[0]=1, aray[I]=2, aray[2]= 3。数组arayS定义后,有rray[]=2 aray[I]= 0, aray[2]= 0。数组rray定义后,将全部元素初始化为0。
数组aray定义错误,因为初始化常量表的常量个数超过数组定义的长度。
只有定义静态数组,C++才会自动把各元素值初始化为0.因此,对arg的定义,与以下说明是等价的:
static int array8[6]= {0 };
static int array8[6]= {0,0,0,0,0,0};
数组array9 由关键字const 约束为常量,所以必须在定义时对其初始化,并且不能在程序代码中对它的元素重新赋值。
数组变量使用的作用域、访问特性等说明形式和性质与普通变量相同。利用初始化值表,可以省略数组长度说明。例如:
double d[]= {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8, 0.9};C认为d数组长度为10,等价于:
double d[10]= {0.0, 0.1, 0.2, 0.3.0.4,0.5, 0.6, 0.7,0.8, 0.9}; [例4-11 数组初始化测试。
#includeusing namespace std;int main(
inta[5]={1,3,5,7,9};
int i;
for(i=0;i<5;i++)
cout<<a[i]<<" “;cout << endl;
static intb[5]={1,2,3};for(i=0;i<5; i++)
cout<<bi]<<” “;cout << endl;
intc[]={ 1,2,3,4,5,6,7};
for(i=0; i<sizeof©/ sizeof(int); i++)
cout<<c[i]<<” ";cout << endl;

fxemlSonuslenbS181 Cyune

程序运行结果:
135

90
23 4 567
程序在说明数组a的同时进行初始化。数组b是静态数组,将b[0]、b[1]、 b[2]分别初始化为1、2、3,b[3]和b[4]则初始化为0。数组C定义时没有显式说明长度,由于初始化值表有7个常量,因此数组c被默认定义长度为7。在for循环语句中,表达式sizeof©sizeof(int)用于计算数组元素个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值