初识C++数组

188 阅读2分钟

启掘金成长之旅!这是我参与「掘金日新计划 · 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;
}

关于数组的定义先了解这么多,欢迎各位大佬多多指点。