动态创建数组

使用运算符new也可以创建数组类型的对象,这时需要给出数组的结构说明。用new运算符动态创建一维数组的语法形式为:

new 类型名【数组长度】;

其中数组长度指出了数组元素的个数,它可以是任何能够得到正整数值的表达式。

细节:

用new动态创建一维数组时,在方括号后仍然可以加小括号“()”,但小括号内不能带任何参数。是否加“()”的区别在于,不加“()”,则对数组每个元素的初始化,与执行“new T”时所进行初始化的方式相同;加“()”,则与执行“new T()”所进行初始化的方式相同。例如,如果这样动态生成一个整型数组:

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

则可以方便地为动态创建的数组用0值初始化。

如果是用new建立的数组,用delete删除时所在指针名前面要加上“【】”,格式如下:

delete[] 指针名;

#include<iostream>
using namespace std;
class point{
public:
    point():x(0),y(0)
    {
        cout<<"default constructor called."<<endl;
    }
    point(int x,int y):x(x),y(y)
    {
        cout<<"constructor called."<<endl;
    }
    ~point()
    {
        cout<<"destructor called."<<endl;
    }
    int getx() const {return x;}
    int gety() const {return y;}
    void movee(int newx,int newy)
    {
        x=newx;
        y=newy;
    }
private:
    int x,y;

};
int main()
{
    point *ptr=new point[2];//创建对象数组
    ptr[0].movee(5,10);//通过指针访问数组元素的成员
    ptr[1].movee(15,20);//通过指针访问数组元素的成员
    cout<<"deleting..."<<endl;
    delete[] ptr;//删除整个对象数组
    return 0;
}

这里利用动态内存分配操作实现了数组的动态创建,使得数组元素的个数可以根据运行时的需要而确定。但是建立和删除数组的过程使得程序略显繁琐,更好的方法是将数组的建立和删除过程封装起来,形成一个动态数组类。

下一篇有 动态数组类的介绍。

时间: 2024-12-28 11:13:18

动态创建数组的相关文章

Java 反射Array动态创建数组

Java 反射Array动态创建数组 @author ixenos 注:java.lang.reflect.Array 是个反射工具包,全是静态方法,创建数组以多维数组为基准,一维数组只是特殊实现 创建一个具有指定的组件类型和长度的新数组(一维数组) newInstance public static Object newInstance(Class<?> componentType, int length) throws NegativeArraySizeException 创建一个具有指定

OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法

<span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray array]; // for (int i = 0; i < 13; i ++) { // [arr addObject:[NSString stringWithFormat:@"lanou%d",i + 1]]; // } // NSLog(@"%@",arr);

js的传值,table中tr的遍历,js中动态创建数组

1.这里关键是对页面中的传值,其次是动态的创建一个数组,用来存值 $(val).css("background-color", "rgb(251, 248, 233)");//取消选中var ary;if (crival_number.indexOf(fnumber) > 0) { var fnumbers = crival_number.split(",");//然后做的操作便是从crival_number中去掉相对应的numberary

2有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).

[cpp] view plaincopyprint? NSMutableArray *arr = [[NSMutableArray alloc] init]; for (int i = 0; i < 15 ; i++) { [arr addObject:[NSString stringWithFormat:@"damo%d",i]]; } NSLog(@"%@",arr); NSMutableArray *bigArr =  [[NSMutableArray 

C++ 用new 动态创建多维数组

我们知道 char *a=new char[10]; 可以创建一个长度为10的数组.当把定值10换为一个变量时,我们的程序也没有任何问题,这时可成了名副其实的动态创建数组,如: int n=10; char *a=new char[n]; 但我们怎么动态创建一个多维数组呢?一定有人写出来这样的代码: //错误代码 char **a=new char[10][10]; 但是在VC6下会提示错误:cannot convert from 'char (*)[10]' to 'char ** ' 查MS

反射——反射API,使用反射创建数组

反射API Java.lang.Reflect库 ①   Class类与Java.lang.Reflect类库一起对反射的概念进行支持. ②   java.lang包下: a)         Class<T>:表示对一个正在运行的Java应用程序中的类和接口,是Reflection的起源. ③   java.lang.reflect包下: a)         Field类:代表类的成员变量(成员变量也称类的属性). b)         Method类:代表类的方法. c)        

动态创建Ⅱ

//动态创建数组控件;和动态绑定它的事件. (这里为了在Panel画颜色,引用了Raize里面的RzPanel) interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, PanelGroup, RzPanel, RzButton,RzComMon; type TForm1 = class(TForm

动态创建二维素组

有时候在创建数组之前,不知道具体几行或列(比如说,我们将数据库中的数据取出,知道列数,而行数是不确定的),这是我们需要动态创建数组: 两种方法:1.转化为一维数组申请2.先申请全部行首指针,再按行逐行申请 1.a=(int *)malloc(sizeof(int),(unsigned)m*n);使用的时候就和一般的二维数组一样.举个例子给你:#include "stdlib.h" #include "stdio.h" #include int main() {  i

动态创建二维vector数组+指针与引用的区别

二维vectorvector<vector <int> > ivec(m ,vector<int>(n));    //m*n的二维vector 动态创建m*n的二维vector方法一:vector<vector <int> > ivec;ivec.resize(m);for(int i=0;i<m;i++) ivec[i].resize(n); 方法二:vector<vector <int> > ivec;ivec