- 与C语言中数组用法相同。
- 可以通过关键字
new
创建一个数组,如int* Array = new int[5]
; 两种创建数组方式的区别: - 生存周期(lifetime)不同
int Array[5];
是在栈上创建的,当到达这一块最后的花括号时会被销毁;而int* Array = new int[5];
是在堆上创建的,直到我们在程序中delete
之前都是存在的,所以需要用delete
关键字删除 - 对静态数组使用
sizeof
时,计算的是整个数组的字节大小;而对动态数组(new
创建的)使用会得到指针变量所占内存的字节大小; - 如果在函数中创建数组想要返回,应使用
new
,否则函数结束静态数组会被自动销毁; - 如果需要等待用户输入,应该使用动态数组;如果大小已经确定,使用静态数组效率更高,因为动态数组涉及到多次地址跳转,运行速度略慢;
- 初始化:在最后加上括号会自动初始化:
int* Array = new int[5]()
,数组中的所有元素就会被初始化为0;
- 对于静态数组,如果访问对象
e
的地址,可以看到其确实存储了数组example
的内容:5个2;
- 对于动态数组,如果访问对象
e
的内存地址,可以看到其实际上并没有存储数组中的值,而是存储了一个地址;如果继续访问这个地址,就能看到这个数组的值。
- 可以通过如下方法记录数组大小:
注意:这里的
size
是编译器在编译时必须要知道的量,所以必须声明是 static
!- C++11
std::array
的用法: std::array
的优点:- 会保留数组大小,可以通过
.size()
访问; - 会做数组边界的检查;
std::array
的缺点:- 性能会比普通数组略慢;