码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++用new创建动态数组


    如果通过像下面这样一般的方法来声明数组,则在程序编译的时候为其分配内存,不管程序最终是否用到这个数组,数组都在那里并占用内存,即静态联编。但是如果使用new,则在运行阶段需要它才进行创建,不需要则不创建,这叫动态联编,这种创建的数组叫做动态数组。并且静态联编必须在写程序时就声明数组长度,而动态联编在运行时才确定数组的长度。

    int arr[5];

    用new创建动态数组:

    double *p3 = new double[3];

    上述代码使得声明一个长为3,类型为double的动态数组。

    delete动态数组:

    delete p3[];

     使用new和delete时应遵守的规则:

     

    声明完动态数组,我们可以通过下面的方式进行初始化:

    • 默认情况下,new分配的对象都有默认初始化
    1. int *p1=new int[10]; //10个未初始化的int
    2. int *p2=new int[10](); //10个初始化为0的int
    3. string *p3=new string[10]; //10个空的string
    4. string *p4=new string[10]();//10个空的string
    • C++11标准:花括号初始化器初始化
    1. int *p1=new int[5]{0,1,2,3,4};
    2. string *p3=new string[3]{"a","the",string(3,'x')};
    • bad_array_new_length异常:当初始化数目大于元素数目时,new表达式失败,抛出此异常。此异常定义在new头文件中

    并且动态分配一个空数组是合法的!

    • 动态分配一个数组是合法的,new返回一个合法的非空指针,此指针保证与new返回的其它任何指针都不相同。但是不能对此指针解引用
    • 普通数组定义一个空数组是不允许的
    1. int arr[0]; //错误
    2. int *p = new int[0]; //正确

    动态数组的访问:

    我们创建了一个动态数组指针p3后,我们可以通过p3[i]来直接访问数组中的第i个元素。请注意!这与我们一般使用*(p3 + i)来访问不同!

     可以看到,上述代码将指针p3当作数组名使用 。

     参考资料:

    C++:34---动态数组(new)_董哥的黑板报的博客-CSDN博客_c++动态数组 new

  • 相关阅读:
    C++之if-else基本应用
    【Blender实景合成】会跳舞的神里绫华
    SSM+老年人活动信息管理系统 毕业设计-附源码121730
    LeetCode --- 1437. Check If All 1‘s Are at Least Length K Places Away 解题报告
    基于多模态融合的非遗图片分类研究
    MySQL数据库表的增删查改
    DTC趋势 | 2022年值得关注的10个DTC趋势
    如何在long-running task中调用async方法
    介绍适用于 Node.js 的 Elastic OpenTelemetry 发行版
    微信小程序实战,基于vue2实现瀑布流
  • 原文地址:https://blog.csdn.net/qq_55621259/article/details/126373884
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号