动态数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态数组相关的知识,希望对你有一定的参考价值。

   动态数组也叫数组的动态联编,有动态联编自然也有静态联编,静态联编就是数组的长度在编译时设置,而动态联编是在运行时才为数组分配空间,其长度在运行时设置,使用完这种动态数组后,应该释放内存。

  静态联编:int arr[10];       //数组长度为一常量

  动态数组在ISO C99后就有了新的规定(如下图文件):技术分享

这是部分说明,完整的说明在 ISO/IEC9899 标准的 6.7.5.2 Array declarators里可以看到,这个里面加入了可变长数组的相关规定。

#include <iostream>
int main()
{
    using namespace std;
    int len;
    cin>>len;
    int arr[len];
  return 0;
}

  之前在网上看到好多人说上面这种写法是错误的,但我在gcc下编译并没有报错,这让我产生了疑惑,后来发现原来是知识有了更新,【ps:那可是99年发布的啊!!国内知识更新真慢。。。】

  言归正传,虽然上面的一种申请动态数组的方法很简单,也很实用(因为它会自动释放内存),但这里还是不得不提提用指针的实现。

#include <iostream>
int main()
{
    using namespace std;
    int len;
    cin>>len;
    int *p = new int [len];         //动态申请
    for(int i=0;i<len;i++)           //输入
    {
        cin>>p[i];
    }
    for(int i=0;i<len;i++)           //输出
    {
        cout<<"p["<<i<<"]="<<p[i]<<endl;
    }
    delete [] p;                   //释放内存
  return 0;
}    

  这里只简单提提用指针创建动态数组的方法,如果要谈到数组与指针,恐怕我也说不清楚,至今也只知道二者的一些区别,至于更深层次的理解,还有待学习。

  (更多关于变长数组的知识,请参考这位博友

以上是关于动态数组的主要内容,如果未能解决你的问题,请参考以下文章

在 ViewPager 中使用视图创建动态片段

动态 Rstudio 代码片段

是否可以动态编译和执行 C# 代码片段?

支持动态或静态片段的不同屏幕尺寸?

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法