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


    1 本课主要内容:

    • 数组的使用场景?
    • 内置数组:一维数组、二维数组、多维数组
    • 指向数组的指针

    2 主要知识点:

    • 数组的使用场景?

    一个单一数据的保存只需要一个普通变量;而如果多份相同类型数据需要保存的时候,就可以用到数组

    例如一个班有 50 个同学,用来保存班上所有同学名字使用以下数组例子:

    1. #include
    2. std::string allNames[50]; // 用来保存 50 名同学名称数组变量
    • 一维数组的声明

    声明语句:

    type arrayName[size];

    type arrayName[size] = {...};

    type arrayName[] = {...};

    • 一维数组的赋值、访问、遍历

    1. // 一维数组例子
    2. int arrayName1[6]; // 声明6个元素的int数组,未初始化值
    3. int arrayName2[6] = { 1, 3, 5, 8, 9, 12 }; // 声明6个元素的int数组,并初始化值
    4. float arrayName3[] = { 1.2, 3.45, 5.01, 8.76 }; // 声明float数组,数组大小则为初始化元素的个数
    5. // 数组赋值
    6. arrayName1[0] = 12;
    7. arrayName1[1] = 13;
    8. arrayName3[0] = 1.25;
    9. // 访问数组元素
    10. const float f1 = arrayName3[0];
    11. const float f2 = arrayName3[1];
    12. std::cout << "arrayName3[0] = " << f1 << std::endl;
    13. std::cout << "arrayName3[1] = " << f2 << std::endl;
    14. // 遍历数组,需要知道数组的大小(元素个数)
    15. for (int i = 0; i < sizeof(arrayName2)/sizeof(int); i++) {
    16. const int v = arrayName2[i];
    17. std::cout << "arrayName2[" << i << "] = " << v << std::endl;
    18. }

    声明语句:

    type arrayName[size1][size2];

    type arrayName[size1][size2] = { {...}, {...}, ... };

    type arrayName[][] = { {...}, {...}, ... };

    • 二维数组的赋值、访问、遍历

    1. // 二维数组例子
    2. float arrayName1[3][5] = {
    3. {1.1, 1.2, 1.3, 1.4, 1.5},
    4. {2.1, 2.2, 2.3, 2.4, 2.5},
    5. {3.1, 3.2, 3.3, 3.4, 3.5}
    6. };
    7. // 数组赋值
    8. arrayName1[0][0] = 100.1;
    9. arrayName1[0][1] = 100.2;
    10. arrayName1[0][2] = 100.2;
    11. // 访问数组元素
    12. const float f1 = arrayName1[1][0];
    13. const float f2 = arrayName1[1][1];
    14. const float f3 = arrayName1[1][2];
    15. std::cout << "arrayName1[1][0] = " << f1 << std::endl;
    16. std::cout << "arrayName1[1][1] = " << f2 << std::endl;
    17. std::cout << "arrayName1[1][2] = " << f3 << std::endl;
    18. // 遍历数组,需要知道数组的大小(元素个数)
    19. for (int i = 0; i < 3; i++) {
    20. for (int j = 0; j < 5; j++) {
    21. const float v = arrayName1[i][j];
    22. std::cout << "arrayName1[" << i << "][" << j << "] = " << v << std::endl;
    23. }
    24. }

    多维数组声明语句:type arrayName[size1][size2]...[sizeN];

    多维数组使用参照二维数组;

    • 指向数组的指针

    1. int arrayName[5] = {10, 20, 30, 40, 50};
    2. int* arrayPointer = arrayName; // 指向数组的指针
    3. // 数组赋值
    4. arrayPointer[0] = 100;
    5. // 访问数组
    6. const int v1 = arrayPointer[1];
    7. std::cout << "arrayPointer[1] = " << v1 << std::endl;
    8. // 遍历数组,需要知道数组的大小(元素个数)
    9. for (int i = 0; i < 5; i++) {
    10. const int v = arrayPointer[i];
    11. std::cout << "arrayPointer[" << i << "] = " << v << std::endl;
    12. }
    • 使用 new 创建动态数组

    (使用结束需要用 delete[] 销毁数组)

    1. // 动态数组例子
    2. const int size = 10; // 动态数组个数
    3. float* arrayName = new float[size]; // 创建动态数组
    4. // 遍历赋值并打印
    5. for (int i = 0; i < size; i++) {
    6. arrayName[i] = (i + 0.25);
    7. std::cout << "arrayName[" << i << "] = " << arrayName[i] << std::endl;
    8. }
    9. 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编程),定期会分享一些技术开发经验、行业资讯、业界动态等。期待您的关注,一起交流学习进步。

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

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

  • 相关阅读:
    词汇与词组
    企业无线架构——旁挂式组网
    青龙面板-快手极速版(每天3块脚本)
    微信自动化工具开发系列01_自动获取微信聊天信息(2022年7月可用)
    二十九、【人工智能】【机器学习】【监督学习】- AdaBoost算法模型
    CSP认证202305-2矩阵运算(c++)
    CSS3 弹性盒子(Flex Box)
    如何使用 CSS 为 SVG 制作动画:示例教程
    深度神经网络为何成功?其中的过程、思想和关键主张选择
    《Thinking In Java》作者:不要使用并发!
  • 原文地址:https://blog.csdn.net/yanghz/article/details/133959232