c++定义动态数组

来源:互联网 发布:福州淘宝美工培训 编辑:程序博客网 时间:2024/06/05 20:12
 如: int Array[5];正确
       int i=5;

       int Array[i]; 错误 因为在编译阶段,编译器并不知道 i 的值是多少,定义语句先经过编译器进行编译,当编译器运行到此处时,发现i 不是常数,因此不能通过编译。 而之所以编译器认为i不是常数,是因为编译阶段,编译器起的作用是查语法错误,和预分配空间,它并不执行程序,因此,没有执行那个赋值语句(只是对这个语句检查错误,和分配空间),因此编译阶段,它将认为i是个变量。

如果 const int i=5;

      int Array[i];

没有验证过,我猜应该是不行的,因为const只是代表只读属性,与编译过程没有影响吧。

动态定义二维动态数组

int size=50;
  int (*p)[10]=new int [size][10];

如果二维数组的列也是动态定义的话:

int **p= new int*[size];//定义指针数组

 for(int i=0;i<size;i++)
  {
    p[i]=new int[Column];
  }
      

 最后 ,因为调用了new, 千万千万别忘记在用完之后,将其所占资源 delete 掉

 

  下面是delete方法:

    for(int i=0;i<size;i++)
   {

            delete []  p[i];   // 要在指针前加[] , 否则的话 只释放p[i]所指的第一个单元所占的空间
   }

 

   delete [] p;     //最后不要忘掉 释放掉开辟的指针数组


0 0