【C++程序员必修课】C++基础课程-11:C++ 内置数组

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编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。

#下载示例源码和开发工具,请进入公众号首页,点击(发消息)最下方的(资源下载)菜单即可获取。

喜欢本文章,记得点赞、分享、关注哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天恩软件工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值