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

动态创建数组[通俗易懂]使用运算符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;
}

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql乐观锁总结和实践(一)

    mysql乐观锁总结和实践(一)

    2022年3月7日
    62
  • cmake快速入门「建议收藏」

    cmake快速入门「建议收藏」简介cmake是kitware公司以及一些开源开发者在开发几个工具套件(VTK)的过程中所产生的衍生品。后来经过发展,最终形成体系,在2001年成为一个独立的开放源代码项目。其官方网站是www.cmake.org,可以通过访问官方网站来获得更多关于cmake的信息,而且目前官方的英文文档比以前有了很大的改进,可以作为实践中的参考手册。下载和安装以及使用:https://fukun.org/archives/0421949.html一、为何要使用项目构建工具?……

    2022年7月15日
    19
  • C语言文件读写操作(详解)

    C语言文件读写操作(详解)数据流和缓冲区是什么?文件类型和文件存取方式都有啥?数据流就C程序而言,从程序移进,移出字节,这种字节流就叫做流。程序与数据的交互是以流的形式进行的。进行C语言文件的读写时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。缓冲区在程序执行时,所提供的额外内存,可用来暂时存放准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。当

    2022年6月2日
    162
  • 香农编码的matlab实现实验总结_香农编码C语言

    香农编码的matlab实现实验总结_香农编码C语言中南大学《信息论与编码》实验报告题目信源编码实验指导教师学院专业班级姓名学号日期目录一、香农编码…………………………………………..3实验目的………………………………………………………………………3实验要求……………..

    2022年9月10日
    0
  • strstr函数的详细讲解

    strstr函数的详细讲解定义:strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。比如:charstr2=“cdef”;charstr1=“abcdefgh”;则通过函数,将返回strstr(str1,str2)=cdefgh;如果str1不包含有str2。charstr…

    2022年6月25日
    26
  • Ljava/lang/Iterable与AbstractMethodError

    Ljava/lang/Iterable与AbstractMethodErrorjava.lang.AbstractMethodError:com.example.demo.repository.UserRepositoryImpl.findAll()Ljava/lang/Iterable; atorg.springframework.data.repository.CrudRepository$$FastClassBySpringCGLIB$$b5a31e6f.invo…

    2022年5月18日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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