启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情
之前聊过了vector对象,一个弹性的容器,但是还有一种底层的数据结构叫做数组,总体上看数组和vector类似,但是元素个数固定,不可以增加减少,灵活性上不如vector,同样由于元素个数固定,而且是底层数据类型,存放在栈中,其内存的分配和释放完全由系统自动完成,效率最高。所以我们来聊聊c++的数组。
还是先看代码,我们可以通过下面的方法定义数组:
#include <iostream>
using namespace std;
int main(){
unsigned num = 42;
int arr01[10];
int arr02[10] = {1,2,3};
int arr03[] = {1, 2, 3}
int arr04[num];
int *arr05[4]; //定义一个包含4个int类型指针的数组
char arr06[] = "hello"
return 0;
}
这里需要注意的是:
1、和vector一样,数组需要先声明存放数据的类型,声明之后只能存放这一种类型的数据。
2、但是和vector不一样的是,数组声明的时候需要声明维度,也就是元素的个数。
3、和vector一样,数组可以存放其他的数据类型,也支持嵌套。
4、数据声明之后,可以不设置初始值,也可以设置,但是初始值的个数不能大于维度数。
5、可以使用表达式作为数组的维度,但是要注意的,数组的需要大于0,并且需要是常量表达式,因为数组的长度是固定的。
6、特别需要细琢磨的是字符串的数组,上面我们声明了一个char类型的数组,但是接收的是hello的一个字符串,所以,会把每个字符依次都放到arr06当中,并且一定要注意字符串的尾部是由一个"\0"的存在的,所以得到的数组的长度会比肉眼可见的字符串的长度+1,特别附上解析的代码:
#include <iostream>
using namespace std;
int main(){
char arr[] = "hello";
int size = sizeof(arr);
cout << size << endl;
for(int i =0;i<size;i++){
cout << arr[i] << endl;//可以通过下标来读取数组元素
}
return 0;
}
关于数组的定义先了解这么多,欢迎各位大佬多多指点。