C++中,数组就是一段连续的内存空间组成的定长的线性表数据结构,数组可以存放相同类型的若干个元素。
C++中定义数组非常简单,下面例子我们直接在栈上分配内存,定义长度为3的整型数组,随后逐个赋值。
int arr[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
如果你知道数组的初始值,我们也可以将其简化为下面写法,如果数组长度大于给定的元素个数,后面将补零。
int arr[3] = {1, 2, 3};
如果你的数组长度就是后面的元素个数,长度也可以省略。
int arr[] = {1, 2, 3};
在堆上分配数组相对复杂一些,我们需要使用new
关键字,此外用完后不要忘了使用delete
释放堆内存。
int *arr = new int[10];
arr[0] = 1;
delete[] arr;
C++17中,可以直接使用标准库提供的std::size()
函数用于获取数组长度。
#include <iostream>
#include <iterator>
int main() {
int arr[3] = {1, 2, 3};
int size = std::size(arr);
std::cout << size << std::endl;
return 0;
}
不过如果你使用的是低于C++17的版本,这通常要使用sizeof
实现。
#include <iostream>
int main() {
int arr[3] = {1, 2, 3};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << size << std::endl;
return 0;
}
数组的元素也可以是数组,这可以形成高维数组,下面是一个二位数组例子,它类似于2行3列的矩阵。
int mat[][] = {{1, 2, 3}, {4, 5, 6}};