关于数组

一、数组类型的变量有三个重要的限制:1、数组长度固定不变;2、在编译时必须知道其长度;3、数组只在定义它的块语句内存在

二、可使用在数组长度后面的一对空圆括号,对数组元素做值初始化:

int *p=new int [10]();

圆括号要求编译器对数组做值初始化,在本例中即把数组元素都设置为0。对于动态数组,其元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。

三、c++允许动态分配空数组

size_t  n = get_size();  //get_size  returns number of elements nedded

int * p =new int[n];

for( int *q=p;q!=p+n;q++)

      /*process the array*/

计算数组长度,然后创建和处理该数组。如果get_size()返回0,代码仍然能够正确执行。c++虽然不允许定义长度为0的数组变量,但明确指出,调用new动态创建长度为0的数组是合法的:

char arr[0];   //error

char *cp=new char[0];  //OK

用new动态创建长度为0的数组时,new返回有效的飞玲指针。该指针与new返回的其他指针不同,不能进行解引用操作,因为她毕竟没有指向任何元素。而允许的操作包括:比较运算,因此,该指针能再循环中使用;在该指针上加减0,或者减去本身,得0值 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值