1 本课主要内容:
- 数组的使用场景?
- 内置数组:一维数组、二维数组、多维数组
- 指向数组的指针
2 主要知识点:
-
数组的使用场景?
一个单一数据的保存只需要一个普通变量;而如果多份相同类型数据需要保存的时候,就可以用到数组
例如一个班有 50 个同学,用来保存班上所有同学名字使用以下数组例子:
#include <string>
std::string allNames[50]; // 用来保存 50 名同学名称数组变量
-
一维数组的声明
声明语句:
type arrayName[size];
type arrayName[size] = {...};
type arrayName[] = {...};
-
一维数组的赋值、访问、遍历
// 一维数组例子
int arrayName1[6]; // 声明6个元素的int数组,未初始化值
int arrayName2[6] = { 1, 3, 5, 8, 9, 12 }; // 声明6个元素的int数组,并初始化值
float arrayName3[] = { 1.2, 3.45, 5.01, 8.76 }; // 声明float数组,数组大小则为初始化元素的个数
// 数组赋值
arrayName1[0] = 12;
arrayName1[1] = 13;
arrayName3[0] = 1.25;
// 访问数组元素
const float f1 = arrayName3[0];
const float f2 = arrayName3[1];
std::cout << "arrayName3[0] = " << f1 << std::endl;
std::cout << "arrayName3[1] = " << f2 << std::endl;
// 遍历数组,需要知道数组的大小(元素个数)
for (int i = 0; i < sizeof(arrayName2)/sizeof(int); i++) {
const int v = arrayName2[i];
std::cout << "arrayName2[" << i << "] = " << v << std::endl;
}
-
二维数组的声明
声明语句:
type arrayName[size1][size2];
type arrayName[size1][size2] = { {...}, {...}, ... };
type arrayName[][] = { {...}, {...}, ... };
-
二维数组的赋值、访问、遍历
// 二维数组例子
float arrayName1[3][5] = {
{1.1, 1.2, 1.3, 1.4, 1.5},
{2.1, 2.2, 2.3, 2.4, 2.5},
{3.1, 3.2, 3.3, 3.4, 3.5}
};
// 数组赋值
arrayName1[0][0] = 100.1;
arrayName1[0][1] = 100.2;
arrayName1[0][2] = 100.2;
// 访问数组元素
const float f1 = arrayName1[1][0];
const float f2 = arrayName1[1][1];
const float f3 = arrayName1[1][2];
std::cout << "arrayName1[1][0] = " << f1 << std::endl;
std::cout << "arrayName1[1][1] = " << f2 << std::endl;
std::cout << "arrayName1[1][2] = " << f3 << std::endl;
// 遍历数组,需要知道数组的大小(元素个数)
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
const float v = arrayName1[i][j];
std::cout << "arrayName1[" << i << "][" << j << "] = " << v << std::endl;
}
}
-
多维数组
多维数组声明语句:type arrayName[size1][size2]...[sizeN];
多维数组使用参照二维数组;
-
指向数组的指针
int arrayName[5] = {10, 20, 30, 40, 50};
int* arrayPointer = arrayName; // 指向数组的指针
// 数组赋值
arrayPointer[0] = 100;
// 访问数组
const int v1 = arrayPointer[1];
std::cout << "arrayPointer[1] = " << v1 << std::endl;
// 遍历数组,需要知道数组的大小(元素个数)
for (int i = 0; i < 5; i++) {
const int v = arrayPointer[i];
std::cout << "arrayPointer[" << i << "] = " << v << std::endl;
}
-
使用 new 创建动态数组
(使用结束需要用 delete[] 销毁数组)
// 动态数组例子
const int size = 10; // 动态数组个数
float* arrayName = new float[size]; // 创建动态数组
// 遍历赋值并打印
for (int i = 0; i < size; i++) {
arrayName[i] = (i + 0.25);
std::cout << "arrayName[" << i << "] = " << arrayName[i] << std::endl;
}
delete[] arrayName; // 销毁动态数组
-
数组排序是从 0 开始计算
3 注意事项:
- 访问内置数组需要注意下标越界;就是 type array[size] array[index] 访问数组时 index
4 课后练习:
- 练习1:利用 std::generate_canonical 产生 100 组 [0,1] 范围内随机浮点数,存放到数组1
- 练习2:遍历数组1,判断元素值 <0.5,元素值 +1.0,把结果更新到数组元素值,最后再遍历打印出来
附录:在线视频课程
进入视频号学习本文配套视频课程。
-【End】-
哈喽,大家好!我是喜欢coding的小二,一枚“靓仔又不掉头发”的C++开发大头兵;欢迎围观公众号(20YC编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。
#下载示例源码和开发工具,请进入公众号首页,点击(发消息)最下方的(资源下载)菜单即可获取。
喜欢本文章,记得点赞、分享、关注哦~