C++动态数组再总结
动态数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。
1.变长一维数组
实现变长数组最简单的是变长一维数组,你可以这样做:
//文件名:array01.cpp#include<iostream>
using namespace std;
int main(){
int len;
cin>>len;//用指针p指向new动态分配的长度为len*sizeof(int)的内存空间int*p=new int[len];...........delete[]p;
return0;
}
注意int*p=newint[len];这一句,你不能这样做:int p[len];C++编译器会报错说len的大小不能确定,因为用这种形式声明数组,数组的大小需要在编译时确定。
而且这样也不行:
int p[]=new int[len];
编译器会说不能把int*型转化为int[]型,因为用new开辟了一段内存空间后会返回这段内存的首地址,所以要把这个地址赋给一个指针,所以要用int*p=new int[len];
array01.cpp实现了一个变长的一维数组,但是要养成一个好习惯,就是注意要注销指针p,使程序释放用new开辟的内存空间。
当然使用C++标准模版库(STL)中的vector(向量)也可以实现变长数组:
//文件名:array02.cpp#include<iostream>
#include<vector>
using namespace std;int main(){int len;
cin>>len;
vector<int>array(len);//声明变长数组
for(int i=0;i<len;i++)
array[i]=i;
cout<<array[i]<<"\t";
}return0;
}
2.动态指针数组
在构造函数中分配空间: arr = new TYPE*[size]; for(int k=0; k<size;k++)arr[k] = new TYPE; 在析构函数中回收资源: for(int k=0;k<size; k++)delete arr[k]; delete []arr; 再来一个示例:
#include <iostream>
using namespace std;
int main()
{int ** arr;arr = new int* [3];for (int k=0; k<3; k++){arr[k] = new int;cin>>*arr[k]; }for (int k=0; k<3; k++)cout<<*arr[k]<<" ";cout<<endl;for (int k=0; k<3; k++)delete arr[k];delete []arr;return 0;
}
转载于:https://blog.51cto.com/zhuxianzhong/1531776
C++动态数组再总结相关推荐
- C专家编程 第10章 再论指针 10.7 使用指针创建和使用动态数组
使用指针创建和使用动态数组 当预先并不知道数据的长度时,可以使用动态数组.绝大多数具有数组的编程语言都能够在运行时设置数组的长度.它们允许程序员计算需要处理的元素的数目,然后创建一个刚好能容纳 ...
- vector 容器 动态数组总结
vector 容器 动态数组总结 二话不说直接上代码 #include <vector> #include <algorithm> #include <iostream& ...
- 维度及长度均可任意变形的动态数组
一.维度及长度均可任意变形的动态数组概述 收藏 近日,有同事需要设计一个可自由变形的多维数组,苦思数日,不得其解,求助于我.于是我帮他写了一个可自由改变维度及长度的数组ADT.后来想,网上应该 ...
- sv队列和动态数组的区别_systemverilog学习(4)动态数组
本节主要内容:动态数组,队列,联合数组,数组基本操作,结构体类型,枚举类型 一:动态数组 1:基础 在run-time才知道元素个数,在compile-time不知道 可以在仿真的时候再确定元素个数 ...
- unique函数_Office 365函数新世界:动态数组
我们今天分享的是FILTER函数,她完美展现了365函数世界动态数组的理念:运算高效.公式简洁.还可以作为中转表的性质用于其它函数二次计算.基础语法在日常数据处理中,我们经常会遇到一对多式的数据查询问 ...
- 静态数组和动态数组 内存分布
数组是程序设计中是一个非常重要的概念.数组是一个用于收集大量类似数据的容器, 以及其每一个元素能被相同处理过程迭代来处理的一个抽象体. 创建数组一般有三种方式:全局/静态范围的数组,局部变量数组,申请 ...
- 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...
#---------------------------------指针-----------------------------------# #include <iostream> i ...
- sv队列和动态数组的区别_Go 刷 LeetCode 系列:经典(7) 设计双端队列
设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k.insertFront():将一个元素添加到双端队列头部.如果操作成功返回 true ...
- C语言动态数组建立方法
动态数组是指在声明时没有确定数组大小的数组,即忽略圆括号中的下标:当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小.使用动态数组的优点是可以根据用户需要,有效利用存储 ...
最新文章
- 哈佛博士生教你轻松愉快地读博
- mongo 多条件筛选_如何制作提交按钮,实现多条件筛选
- ALGO-1 区间k大数查询
- 【机器视觉】 while算子
- 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
- ios下使用rsa算法与php进行加解密通讯
- 机器学习图像源代码_使用带有代码的机器学习进行快速房地产图像分类
- 织梦留言板guestbook.htm加入头部导航
- LeetCode 832. 翻转图像(异或^)
- 4月17日鸿蒙开发者大会,4月17日这天,将载入华为史册
- python requests session刷新_Python Requests Session set-cookie不生效的坑
- 关于Python中的错误与异常,你是否了解的够仔细?
- (28)FPGA面试技能提升篇(SATA接口)
- c语言链表版百度云,链表详解(C语言版)
- 基于阿里云服务器+wordpress构建自己的网站(全过程系列,无需任何编程知识)
- 使用PacketSifter从pcap中筛选有价值的信息
- 最小配筋率、配筋率、超筋率定义与分析
- 【三星笔试】给定一些汽油E,给定一段距离D,完成D这段距离...
- 2022年起重机械指挥考试题库及模拟考试
- 新手平面设计师如何在网上接单赚钱?
热门文章
- 数值分析上机题matlab线性方程组,数值分析上机实验报告 - 线性方程组部分实验题1...
- oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别
- 功能测试Bug频发?测试工作中这点不可忽略
- mysql批量insert bug_MySQL Bug insert into on duplicate key update 语法更新 text blob 大字段导致 MySQL crash...
- numpy维度交换_numpy之转置(transpose)和轴对换
- 安卓okhttp上传jason和图片_微信图片总是「已过期或被清理」?简单 3 招,可摆脱烦恼...
- php面对对象设计,PHP对象与设计
- g++ linux 编译开栈_使用 linux kernel +busybox 定制linux系统
- 股票自动交易python下单接口_用 Python 写了个简单的股票量化交易框架
- 利用结构体输入输出员工信息