博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用new/delete动态创建数组| 一维/二维/三维
阅读量:6466 次
发布时间:2019-06-23

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

我在看一些C++方面的教材时,一些书上这样写到:

用New操作可以创建多维数组,new 类型名 T[下标表达式1][下表表达式2]...。数组的个数是除最左边一位外各位下表表达式的乘积。

如:float (*fp)[25][10];

fp=new float[10][25][10];//用new操作产生了一个指向25*10的二维数组的指针;

而,这么写:float *fp=new float[10][25][10]; 是错误的,原因是什么呢?下面试分析之:

实际上,不难发现,指针总是比它指向的数组对象少一维。

****一维数组如;float *fp=new float[10];指针fp开始指向的是一维数组的首地址,指针fp是一个

指向float型数据的指针。

****二维数组如:float (*fp)[25]=new float[10][25],指针fp开始指向的是二维数组的首地址,指针fp是一个指向有25个元素的的float类型的一维数组,而fp

有10个偏移,每个偏移都指向一个有25个元素的float类型的一维数组,所以实际上相当于一个二维数组。如果在深入一步进行理解,就可以写出如下等价代码:

float **fp=new float* [10] ;for (int i=0;i<10;i++)             fp[i]=new float[25] ;

****三维数组如:float (*fp)[25][10]=new float[10][25][10];指针fp是一个指向25*10的二维float型的数组的指针,指针的偏移是10,不过每个偏移指向的是一个二维

数组。

******用一段程序进行总结:

1 #include
2 using namespace std; 3 /* 4 *--- 用new创建动态的多维数组 5 *--- 深入理解指针的功能和作用 6 */ 7 int main() 8 { 9 float *fp=new float[5];10 float (*fp1)[5]=new float[4][5];11 float (*fp2)[4][5]=new float[2][4][5];12 cout<<"---------The division 1-----------"<

代码运行结果:

 

转载于:https://www.cnblogs.com/sjlove/archive/2013/05/16/3082586.html

你可能感兴趣的文章
C#中使用命名管道进行进程通信的实例
查看>>
Lintcode: Minimum Subarray
查看>>
内存问题 动态加载地址和运行时地址
查看>>
LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\Release\opencv_ocl249.lib”
查看>>
更改MySQL数据文件目录位置
查看>>
android假设重写onDraw实现一个相似TextView能够显示表情和链接的控件(二)
查看>>
Java魔法堂:注解用法详解——@SuppressWarnings(转)
查看>>
unity, GUIStyle and Skin
查看>>
link和@import的区别
查看>>
hdu2159 Fate 二维背包
查看>>
Tengine笔记3:Nginx的反向代理和健康状态检查
查看>>
css3中关于伪类的使用
查看>>
动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
查看>>
【转】d3d的投影矩阵推导
查看>>
Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境
查看>>
golang rbac框架
查看>>
hdu 5626 Clarke and points
查看>>
hbase0.96 put流程 源码分析
查看>>
窗体和线程漫谈之工作线程怎样将数据的处理结果显示到窗体
查看>>
2014秋C++第5周项目1參考-见识刚開始学习的人常见错误
查看>>