在 C/C++ 中,数组的创建方式有多种,具体取决于数组的类型、作用域和内存分配方式,以下是常见的数组创建方式:
1.静态数组(栈上分配)
1.数组的大小在编译时确定,内存分配在栈上。
2.适用于已知大小的数组。
3.数组大小必须是常量。
4.生命周期由作用域决定(函数结束时自动释放)。
C/C++ 示例:
2.动态数组(堆上分配)
1.数组的大小在运行时确定,内存分配在堆上。
2.适用于需要动态调整大小的数组。
3.需要手动管理内存(free 或 delete[])。
4.数组大小可以是变量。
C 语言示例:
C++ 语言示例:
3.多维数组
可以创建二维或多维数组。
静态多维数组:
C语言:
动态多维数组:
C 语言:
C++ 语言:
4.C++ STL 容器(动态数组)
C++ 提供了标准模板库(STL)中的 std::vector
,可以动态管理数组。
1.自动管理内存,无需手动释放。
2.支持动态调整大小。
C++语言:
5.全局或静态数组
数组声明在全局作用域或使用 static
关键字。
1.全局数组在整个程序运行期间存在。
2.静态数组的生命周期持续到程序结束
C语言:
6.C99 中的变长数组(VLA)
C99 标准支持变长数组(Variable-Length Array),数组大小可以是变量。
1.仅适用于 C99 及以上标准。
2.数组大小在运行时确定。
C语言:
7.C++11 中的 std::array
C++11 引入了 std::array
,提供固定大小的数组封装。
1.大小固定,性能接近原生数组。
2.提供边界检查等安全特性。
C++语言:
总结
创建方式 | 特点 |
---|---|
静态数组 | 栈上分配,大小固定,自动释放。 |
动态数组 | 堆上分配,大小可变,需手动释放。 |
多维数组 | 支持多维,静态或动态分配。 |
STL 容器(vector) | 动态数组,自动管理内存,支持动态调整大小。 |
全局/静态数组 | 生命周期长,全局或静态作用域。 |
变长数组(VLA) | C99 特性,大小可以是变量。 |
std::array | C++11 特性,固定大小,安全性高。 |
根据具体需求选择合适的数组创建方式。