动态数组是指在声明时,没有确定数组大小的数组,它可以随程序需要而重新指定大小。动态数组的内存空间是从堆动态分配的,当程序执行到我们编写的分配语句时,才为其分配存储空间。
使用动态数组的优点是可以根据用户需要,有效利用存储空间。
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次阅读
unpacked数组和packed数组的主要区别
unpacked数组和packed数组的主要区别是unpacked数组在物理存储时不能保证连续,而packed数组则能保证在物理上连续存储。
SystemVerilog动态数组的大小更改展示
需要使用" new "操作符实例化一个动态数组,使用[]表示。在实例化过程中,会设置动态数组的大小。
C语言中的数组空间动态开辟
C语言中的数组空间动态开辟 在C语言中,必不可少的需要使用到数组,通常为了动态的开辟数组空间,可以使用 malloc 函数,在C++中可以使
动态数组和C++ std::vector详解
std::vector是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。std::v
数组的定义 什么是数组
数组 数组是内置类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。 在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。
python列表和数组的区别
内部实现、性能、操作方式等多个方面进行详细分析,以帮助读者更好地理解它们之间的区别和适用场景。 一、内部实现: 列表(List): Python中的列表是一种有序的、可变的、可包含不同类型元素的数据结构。列表的实现基于动态数组,
数组和链表在内存中的区别 数组和链表的优缺点
数组和链表在内存中的区别 数组和链表的优缺点 数组和链表是常见的数据结构,用于组织和存储数据。它们在内存中的存储方式以及优缺点方面存在一些显著的差异。本文将详细探讨这些差异以及它们的
指针数组和二维数组有没有区别
指针数组和二维数组有没有区别?比如这样的两个代码。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
评论