数组array就是同一种类型的数据集合。数组的运用还是比较多的,比如成绩,工资,学号只要是一类的数据,就可以定义成数组。不过在使用数组时,还是有很多要小细节要注意。
数组的定义
1 2 3 4 5 |
double a[10];? ? //定义未初始化 int c[0];? ? //错误定义,不能分配0大小的数组 double b[5] = {5,5,5,5,4}; //定义加初始化? ? ?初始化个数不能大于数组个数,小于等于都可以 |
数组在内存中
数组在内存中是一块连续的内存,一维数组静态分配,动态分配内存都是连续的
1 2 3 |
int? ?a[5];? ?//静态 int* a = new int[5];? //动态,记得用完之后要delete; <a href="https://zouzhongliang.com/index.php/2019/03/08/c-new%e5%92%8cdelete/">new与delete</a> |
(如果是动态分配的二维数组就不一定是连续的)
数组名可以用来当数组的首地址
1 2 3 |
int a[10]; int* p = a; |
数组长度获取方法:
1 2 3 |
int a[10]; int n = sizeof(a)/sizeof(a[0]) |
数组元素的访问:
用下标访问符[],数组的下标是从0开始,不是从1开始
数组元素的遍历:
一般用for循环进行遍历,因为数组长度都是已知的,(为什么用for循环,可以看:各循环特点)
1 2 3 4 5 |
int a[10];? ? ?//像这类定义了未初始化的,可以用for进行赋值 for(int i=0;i<10;i++){ ? ? ?a[i] = 0; } |
数组的复制:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int b[10];? ? ? for(int i=0;i<10;i++){ ? ? ?b[i] = 0; } int a[10]; a = b;? ?//错误,C++没有提供数组的整体复制操作 for(int i=0;i<10;i++){ ? ? ?a[i] = b[i];? ? ? ? ? ? //只能每个元素复制 }? |
注意一点数组不会做下标越界检查,比如上面的数组元素只有10个a[0]-a[9],但写成a[10]编译器也会让其通过编译,运行时将会出错,所以数组下标的使用要小心。建议大家用Vector类来代替数组的使用,它也就是C++为了代替数组做的设计。
《数组使用注意点》上有1条评论
评论已关闭。