动态创建数组[通俗易懂]

动态创建数组[通俗易懂]使用运算符new也可以创建数组类型的对象,这时需要给出数组的结构说明。用new运算符动态创建一维数组的语法形式为:new类型名【数组长度】;其中数组长度指出了数组元素的个数,它可以是任何能够得到正整数值的表达式。细节:用new动态创建一维数组时,在方括号后仍然可以加小括号“()”,但小括号内不能带任何参数。是否加“()”的区别在于,不加“()”,则对数组每个元素的初始化,与执行

大家好,又见面了,我是你们的朋友全栈君。

使用运算符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;
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134190.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号