一、基本概念
C++数组是一种线性数据结构,它由一系列相同类型的元素组成。每个元素都可以通过下标来访问,下标从0开始,最大下标为数组长度减一。
二、声明数组
在C++中声明数组需要指定元素类型和数组大小,语法如下:
type arrayName[arraySize];
其中,type
表示元素类型,arrayName
表示数组名称,arraySize
表示数组大小。
例如,声明一个大小为5、元素类型为int
的数组:
int myArray[5];
三、初始化数组
1. 使用大括号初始化
使用大括号可以为数组元素提供初始值。以下是一些示例:
// 声明一个大小为3的字符串数组,并赋初值
string strArray[3] = {"Hello", "world", "!"};
// 声明一个大小为4的整型数组,并赋初值
int intArray[4] = {1, 2, 3, 4};
// 声明一个大小为10的浮点型数组,并赋初值
float floatArray[10] = {1.1, 2.2, 3.3, 4.4};
2. 不使用大括号初始化
如果没有为数组提供初始值,那么数组中的元素将会被默认初始化。以下是一些示例:
// 声明一个大小为5的整型数组,并默认初始化为0
int intArray[5] = {};
// 声明一个大小为3的字符型数组,并默认初始化为空字符
char charArray[3];
// 声明一个大小为4的布尔型数组,并默认初始化为false
bool boolArray[4];
3. 动态初始化
在C++中,可以在运行时动态地初始化数组,需要使用new
来申请内存。以下是一些示例:
// 动态申请一个大小为10的整型数组,并赋初值
int *intArray = new int[10]{1,2,3,4,5,6,7,8,9,10};
// 动态申请一个大小为5的浮点型数组,并默认初始化为0
float *floatArray = new float[5]();
四、补充说明
在C++中,如果数组初始化的元素个数少于数组大小,那么剩余的元素将会被默认初始化。例如:
int intArray[5] = {1, 2};
这里只初始化了前两个元素,那么后三个元素将会被默认初始化为0。
如果数组初始化的元素个数多于数组大小,那么编译器将会抛出编译错误。
另外,C++11添加了initializer_list
初始化列表特性,可以用来方便地初始化数组和其他容器类型的对象,具体用法可以参考相关文档。
完整示例代码
// 大括号初始化的示例
#include <iostream>
#include <string>
using namespace std;
int main() {
// 声明一个大小为3的字符串数组,并赋初值
string strArray[3] = {"Hello", "world", "!"};
for(int i = 0; i < 3; ++i) {
cout << strArray[i] << " ";
}
cout << endl;
// 声明一个大小为4的整型数组,并赋初值
int intArray[4] = {1, 2, 3, 4};
for(int i = 0; i < 4; ++i) {
cout << intArray[i] << " ";
}
cout << endl;
// 声明一个大小为10的浮点型数组,并赋初值
float floatArray[10] = {1.1, 2.2, 3.3, 4.4};
for(int i = 0; i < 10; ++i) {
cout << floatArray[i] << " ";
}
cout << endl;
return 0;
}
// 不使用大括号初始化的示例
#include <iostream>
using namespace std;
int main() {
// 声明一个大小为5的整型数组,并默认初始化为0
int intArray[5] = {};
for(int i = 0; i < 5; ++i) {
cout << intArray[i] << " ";
}
cout << endl;
// 声明一个大小为3的字符型数组,并默认初始化为空字符
char charArray[3];
for(int i = 0; i < 3; ++i) {
cout << charArray[i] << " ";
}
cout << endl;
// 声明一个大小为4的布尔型数组,并默认初始化为false
bool boolArray[4];
for(int i = 0; i < 4; ++i) {
cout << boolArray[i] << " ";
}
cout << endl;
return 0;
}
// 动态初始化的示例
#include <iostream>
using namespace std;
int main() {
// 动态申请一个大小为10的整型数组,并赋初值
int *intArray = new int[10]{1,2,3,4,5,6,7,8,9,10};
for(int i = 0; i < 10; ++i) {
cout << intArray[i] << " ";
}
cout << endl;
delete[] intArray;
// 动态申请一个大小为5的浮点型数组,并默认初始化为0
float *floatArray = new float[5]();
for(int i = 0; i < 5; ++i) {
cout << floatArray[i] << " ";
}
cout << endl;
delete[] floatArray;
return 0;
}