一、简单介绍

#include <iostream>
#include <memory>
using namespace std;
int main()
{
//typedef定一个数组的类型
typedef int ptr[109];
//定义一个数组类型的对象int *p = new ptr;
for(int i = 0; i!= 109; ++i)p[i] = i;
for(int i = 0; i!= 109;++i)cout << p[i] << endl;
int n;
cin >> n;//定义一个数组类型的对象,new + 类型+ [],后面()表示数组的每个元素执行值初始化
int *p1 = new int[n]();
for(int i = 0;i != n;++i)p1[i] = i;
for(int i = 0; i!=n;++i)
cout << p1[i] << endl;return 0;
}                                                                            

二、分配一个数组会得到一个指向数组第一个元素的指针。

由于分配内存返回的不是一个数组类型,因此不能对动态数组调用begin或者end。这些函数的使用维度来返回指向首元素和尾后元素的指针。处于相同的原因,也不能使用范围for语句来处理动态数组中的元素。

三、初始化动态分配对象的数组。

默认情况下,new分配的动态对象,不管是单个分配还是数组中的,都是默认初始化的。可以对数组中元素进行值初始化,方法是在大小之后跟一对空括号。

string *p4 = new string[19]();
//打印元素,发现都是空string
for(auto p = p4;p != p4+19;++p)cout << *p << endl;

在新标准中,我们还可以提供一个元素初始化器的花括号列表:

int *p5 = new int[20]{1,2,3,4,5,6};
for(int *q = p5;q != p5 + 20;++ q)cout << *q <<endl;
1
2
3
4
5
6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
int n  = get_size();
int *p = new  int[n];
for(int q = p;q != p +n; ++q)

下面的语句是合法的。但是定义数组(非动态数组)是非法的。

char arr[0];   //数组不能维度是0
char *cp = new char[0];  //合法的,但cp不能解引用,相当于一个尾后指针。

三、释放动态数组

为了释放动态数组,我们使用一种特殊的形式的delete------在指针前加上一个方括号对:

delete p;       //p必须是一个空的方括号对
delete [] p;    //p是一个动态数组

如下:

typedef int arrT[42];
int *p = new arrT;
delete [] p;

c++ 之动态数组简单介绍相关推荐

  1. C++动态数组简单的模拟二元堆

    //C++动态数组简单的模拟二元堆 #include<iostream>using namespace std;class BinaryHeap { private:int cap; // ...

  2. VBA动态数组简单应用

    ###VBA动态数组简单应用 动态数组在VBA中,用于筛选大数据是比较好用的.当一行数据满足筛选要求时,将该行数据写入到新的数组中,逐维增加,最后再将这个新的数组输出到表格. 动态数组和一静态数组定义 ...

  3. C#动态数组ArrayList介绍

    ArrayList是一种动态数组,其容量可随着我们的需要自动进行扩充. ArrayList位于System.Collections命名空间中,所以我们在使用时,需要导入此命名空间. 下面,我们还是在S ...

  4. Java——ArrayList(动态数组)介绍

    文章目录 一.简介 二.使用 1.构造 1.1 无参构造 1.2 指定初始容量 1.3 利用其他的collection进行构造 2.基础操作 2.1 添加元素 2.2 删除元素 2.3 修改元素 2. ...

  5. java数组简单介绍以及其方法

    小谈一下java数组 数组是存放数据的容器,有两个特点:元素类型唯一,长度固定. 一维数组声明:类型[] 数组名;类型 数组名[];推荐用前一种. 多维数组声明同样是以上要求. 在数组创建时,要注意一 ...

  6. C语言实现 动态数组 处理任意类型数据

    引言:动态数组在C/C++.Java.Python等语言中应用广泛,高级语言一般通过调用类或接口等可以快捷使用,C语言实现动态数组需要手动构造,以下为实现过程. 1 结构体构造动态数组 typedef ...

  7. 数据结构-动态查找树表与平衡二叉树 红黑树简单介绍

    参考资料 数据结构(严蔚敏) 大话数据结构 百度百科 https://blog.csdn.net/lpp0900320123/article/details/39524947 https://mp.w ...

  8. 动态数组vector的使用_简单代码示例

    简单代码示例 //动态数组vector的使用 #include <iostream> #include <vector> //用 <vector>头文件 using ...

  9. 简单的动态网站java,Java实践:一个简单的动态数组实现

    一个简单的动态数组实现 基于数组实现 添加10w的容量 在删除 所有 容量 平均是 0.4秒 这个效率是可观的 下面来一起看看代码package com.array; import java.util ...

最新文章

  1. shell指令可以直接在终端输入吗_shell不是LInux系统的壳吗?咋还能脚本编程了?...
  2. [错误收录] the pyflakes.vim plugin requires Vim to be compiled with +python
  3. css3的动画特效--动画序列(animation)
  4. QueryBuildRange中的表达式
  5. NodeJS学习日记--VSCode下调试
  6. TPFanControl v0.62 + 汉化补丁
  7. 什么是软件开发中的 green field 和 brown field 模式 - 绿地开发和棕地开发
  8. 我国对计算机信息系统安全主要是采取,附录信息网络安全监察法规概述二.doc...
  9. python作业高级FTP(第八周)
  10. linux的安全性能,技术|Linux 系统安全性能检查小记
  11. .net无刷新验证码
  12. JDBC的批量查询报告内存溢出解决方法
  13. Redis客户端Redisson+SpringBoot实现的分布式锁案例
  14. hadoop Configured Configrable Configuration Tool 源码详解
  15. Oracle存在修改,不存在插入记录 SQL
  16. 手机企业微信下载文件存储地址
  17. iOS开发 - 给Label加下划线、中划线
  18. 用JAVA编写MD5大写32位加密
  19. css背景图片和背景颜色一起显示
  20. 盘古开源:大数据赋能业务运营,自主研发实现新突破

热门文章

  1. 远程安装Oracle Server
  2. 理解关于java反射中类的域及修饰符
  3. 将图片转换成16进制的代码
  4. [C/C++基础知识] 一篇就让你彻底搞懂qsort快速排序的文章
  5. [Android] 拍照、截图、保存并显示在ImageView控件中
  6. iOS之深入解析objc_msgSend消息转发机制的底层原理
  7. iOS之深入解析如何构建动态库与framework动态更新
  8. HarmonyOS之深入解析服务卡片的使用
  9. 2014\Province_C_C++_A\1 猜年龄
  10. 10.1.2 body标签