100个windows平台C++开发异常之十七数组

100个windows平台C++开发错误之十七数组

by zxy,Java/C++编程交流群:168424095

(81)数组的声明

数据类型数组变量名[个数常量];

因为数组占用的内存空间大小必须在程序编译时决定,并且一旦决定了,就不能再改变。所以只能用常量来指明数组的大小。当然,这是指在数据区或栈区分配内存,如果是在堆区,则可以动态地分配数组的大小。

100个windows平台C++开发异常之十七数组

由于SIZE是确定的,在编译之前就被替换,所以是对的;

第二个则属于动态定义,因为运行时才能知道数组该开辟多大,这种定义是非法的!

(82)数组至少会有一个元素

例如int arr[0];会报错error C2466: 不能分配常量大小为0 的数组。

(83)数组的初始化

对于数组变量,只能在定义时,对整个数组赋初值。

(84)数组的赋值

定义以后不能对数组整体赋值,只能对单个元素进行直接操作。

int arr[5];

arr[5] = {1,2,3,4,5}; //

//

arr = {1,2,3,4,5};   //

可以采用以下方式改变数组中第一个元素的值: 

arr[0] =100;

(85)两个数组不可以相互赋值

可以用一个循环来实现将一个数组内的值一个一个全部赋值给另一个数组,这也称为数组间的拷贝。

100个windows平台C++开发异常之十七数组

因为数组名是数组首元素的内存地址,是一个常量,不能被赋值。