在C++中,数组是一种基础且重要的数据结构,数组用于存储一组相同类型的数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 创建数组
int example[5];
for (int i = 0; i < 5; i++)
example[i] = 5;
// 数组本质上就是一个指针
int* ptr = example;
*(ptr + 1) = 5; // 通过指针来索引元素
// 可以通过new在堆上创建一个数组,new返回一个指针
int* another = new int[5];
for (int i = 0; i < 5; i++)
another[i] = 5;
|
关于数组的大小,C++无法像其他语言一样可以通过.size()之类的方法来获取数组的大小,有一种方法是当你在栈上创建数组时可以获取其大小。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int count1 = sizeof(example) / sizeof(int); // 这种方式只能用于在栈上创建的数组
std::cout << count1 << std::endl;
int count2 = sizeof(another) / sizeof(int); // 指针类型,就不行了。
std::cout << count2 << std::endl;
/*
因此关于C++中获取数组的大小,Cherno的建议是自己维护
*/
static const int arrSize = 5;
int* arr = new int[arrSize];
for (int i = 0; i < arrSize; i++)
arr[i] = 5;
|
当然,如果你使用C++ 11,提供了一个array库,里面实现了一个更安全的数组,这比原版数组有更高的开销,因为它要维护size、边界检查之类的操作,but,谁在乎!
1
2
3
|
std::array<int, 5> exampleArray;
for (int i = 0; i < exampleArray.size(); i++)
exampleArray[i] = 5;
|
- 数组用于存储一组类型相同的数据
- 数组可以通过下标来索引其中的元素,也可以通过指针来索引,数组本质就是一个指针。