c++语言 动态数组 讲解与实例

烂漫一生 提交于 2020-01-13 06:05:29

静态数组:c语言中数组的长度是固定的,也称为静态数组,而这种限制不甚合理。

动态数组:c++中数组有时候不用在编译时就知道长度,直到运行时才知道,这就是动态数组,也就是可以动态分配长度的数组。与静态数组变量区别是,动态分配的数组空间将一直存在,直到程序显式的释放它为止。

定义一个动态数组:

      int *p=new int[100];

      p
就是一个动态数组,其实动态数组就是一个指针,使用newp分配长度。

      也可以通过这种方式初始化: int *p=new int[100]();

      上面的语句等同于下面的语句:
      int n=100; 
      int *p=new int[n];
      
因为n是一个变量,所以数组的长度是动态的。

应用实例:

      int n=100; 
      int *p=new int[n];

      p
可以使用数组下标为其赋值:
      for(int i=0;i<n;i++)
      {
            p[i]=i+3;
      }
     
上面这种方式没有问题,但我想既然p是一个指针,那么使用指针操作一样也可以吧?

     for(int i=0;i<n;i++,p++)
    {
           *p=i;
     }
 
      
这样就可以了,将他们输出:(这时指针p又指向了最后)
      
      p--;
      for(int *p2=p-n;p2!=p;p--)
      {
           cout<<*p<<endl;
      }


动态空间释放实例:

      重要的是不要忘记将动态创造的空间释放掉,语句是:delete [] p; 

      ‘[ ]’表明该指针是指向的自由存储区的数组,而非单个对象。如果忘记了[]号,将导致程序在运行时出错。

下面是完整代码:

#include<iostream.h>
using namespace std;
int main(void)
{
    
int n=200;
    
int *p=new int[n];
    
for(int i=0;i<n;i++,p++)
    {
        cout<<p<<endl;
        *p=i;
    }
    p--;
    
for(int *p0=p-n;p0!=p;p--)
    {
        cout<<*p<<endl;
    }
    
    delete [] p;
    
    getchar();
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!