0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

变长数组和动态数组区别

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-09-28 15:20 次阅读

动态数组是指在声明时,没有确定数组大小的数组,它可以随程序需要而重新指定大小。动态数组的内存空间是从堆动态分配的,当程序执行到我们编写的分配语句时,才为其分配存储空间。

使用动态数组的优点是可以根据用户需要,有效利用存储空间。

inta[10];//静态数组,在堆栈上创建

intn;
//C语言的malloc函数进行书写
int*p=(int*)malloc(n*sizeof(int));

变长数组的实际意思是以变量作为长度的数组,区别于以常数作为长度的数组。英文Variable-Length Array(后续都缩写成VLA),注意这里有一个连接号。

连接号-代表的意思是,Variable不是一个用于修饰Length的形容词,而是一个名字名词(即变量的意思)。

了解了正确的含义后,不难理解VLA的目的就是数组的长度是由一个变量指定的,而非常数。

总结:

变长数组一般是在栈上分配,动态数组一般是在堆上分配。

变长数组在函数返回之后声明周期就结束了,而动态数组需要手动free掉。

变长数组使用多了容易栈溢出,而且它在c11里只是可选特性,和标准 C++ 也不兼容,所以不建议过多使用。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62595
  • 动态数组
    +关注

    关注

    0

    文章

    3

    浏览量

    5952
收藏 人收藏

    评论

    相关推荐

    C语言中指针数组数组指针的区别

    指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维数组与指针以及指针数组
    发表于 08-17 15:29 412次阅读

    详谈数组和指针的区别与联系

    详谈数组和指针的区别与联系
    的头像 发表于 06-29 15:18 2.2w次阅读
    详谈<b class='flag-5'>数组</b>和指针的<b class='flag-5'>区别</b>与联系

    指针数组数组指针的区别

    这里我们区分两个重要的概念:指针数组数组指针。
    的头像 发表于 06-29 15:30 2w次阅读
    指针<b class='flag-5'>数组</b>和<b class='flag-5'>数组</b>指针的<b class='flag-5'>区别</b>

    C语言指针和数组区别

    在C语言教程中我们使用通过数组名通过偏移和指针偏移都可以遍历数组,那么指针和数组到底有什么区别??
    的头像 发表于 07-18 16:29 1930次阅读

    二维数组数组指针以及指针数组

    二维数组数组指针以及指针数组
    的头像 发表于 08-16 09:02 2668次阅读

    unpacked数组和packed数组的主要区别

    unpacked数组和packed数组的主要区别是unpacked数组在物理存储时不能保证连续,而packed数组则能保证在物理上连续存储。
    的头像 发表于 10-18 09:13 2836次阅读

    SystemVerilog动态数组的大小更改展示

    需要使用" new "操作符实例化一个动态数组,使用[]表示。在实例化过程中,会设置动态数组的大小。
    的头像 发表于 10-21 09:43 1454次阅读

    C语言中的数组空间动态开辟

    C语言中的数组空间动态开辟 在C语言中,必不可少的需要使用到数组,通常为了动态的开辟数组空间,可以使用 malloc 函数,在C++中可以使
    的头像 发表于 02-10 12:42 2165次阅读

    动态数组和C++ std::vector详解

    std::vector是C++的默认动态数组,其与array最大的区别在于vector的数组动态的,即其大小可以在运行时更改。std::v
    的头像 发表于 07-19 11:07 973次阅读

    数组的定义 什么是数组

    数组 数组是内置类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。 在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。
    的头像 发表于 10-09 09:39 1900次阅读

    python列表和数组区别

    内部实现、性能、操作方式等多个方面进行详细分析,以帮助读者更好地理解它们之间的区别和适用场景。 一、内部实现: 列表(List): Python中的列表是一种有序的、可变的、可包含不同类型元素的数据结构。列表的实现基于动态数组
    的头像 发表于 11-21 15:13 2406次阅读

    数组和指针不相同吗?数组和指针有哪些区别

    数组就是指针,指针就是数组,这样的言论在评论区看到不下于10次。
    的头像 发表于 12-13 16:34 1513次阅读
    <b class='flag-5'>数组</b>和指针不相同吗?<b class='flag-5'>数组</b>和指针有哪些<b class='flag-5'>区别</b>

    数组和链表有何区别

    数组和链表的区别,这个问题,不仅面试中经常遇到,考研的同学也得掌握才行。
    的头像 发表于 02-19 15:33 512次阅读
    <b class='flag-5'>数组</b>和链表有何<b class='flag-5'>区别</b>

    数组和链表在内存中的区别 数组和链表的优缺点

    数组和链表在内存中的区别 数组和链表的优缺点  数组和链表是常见的数据结构,用于组织和存储数据。它们在内存中的存储方式以及优缺点方面存在一些显著的差异。本文将详细探讨这些差异以及它们的
    的头像 发表于 02-21 11:30 1034次阅读

    指针数组和二维数组有没有区别

    指针数组和二维数组有没有区别?比如这样的两个代码。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
    的头像 发表于 11-24 11:12 150次阅读