博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++动态数组再总结
阅读量:7126 次
发布时间:2019-06-28

本文共 1349 字,大约阅读时间需要 4 分钟。

动态数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。

1.变长一维数组


实现变长数组最简单的是变长一维数组,你可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
//文件名: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(向量)也可以实现变长数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//文件名: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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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
;
}
本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1531776
,如需转载请自行联系原作者
你可能感兴趣的文章
struts2文件下载的实现
查看>>
Ajax-XMLHttpRequest
查看>>
java.io.File 的一些记录
查看>>
高性能异步图片加载器的JS库:lazysizes
查看>>
android 通知(android 8.0可用)
查看>>
Android 系统设置中显示设置之休眠和屏保设置篇
查看>>
POJ 1741 Tree (点分治)
查看>>
POJ 3660 Cow Contest (dfs)
查看>>
ASP.NET Core MVC I/O编程模型
查看>>
Android收起虚拟键盘
查看>>
基于二分查找(折半查找)的时间范围匹配
查看>>
PYTHON1.day10
查看>>
Android性能优化篇 [ 谷歌官方 ]
查看>>
ThinkPHP/---获取今天开始的时间戳与结束的时间戳
查看>>
matlib常用知识
查看>>
Directx11教程(43) 纹理映射(13)-动态纹理映射
查看>>
opengl 教程(13) 摄像机坐标系
查看>>
[leetcode-526-Beautiful Arrangement]
查看>>
yii CGridView colum 链接
查看>>
windows 如何将安装Anaconda之前已经安装的python版本(中已安装的库)移动到 Anaconda中...
查看>>