码迷,mamicode.com
首页 > 编程语言 > 详细

动态数组

时间:2016-03-13 22:25:02      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

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

  静态联编: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;
}    

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

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

动态数组

标签:

原文地址:http://www.cnblogs.com/Vicebery/p/5273298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!