如何定义动态一维二维数组
来源:互联网 发布:直播诱导支付充值源码 编辑:程序博客网 时间:2024/05/07 11:54
首先,C++是不允许定义不确定数组的,但是,有时候我们并不确定所需要的数组的长度,我们所需要的数组的长度根据输入的不同而不同,所以,这时候定义一个动态长度的数组十分必要,但是,C++是不支持定义不确定长度的数组的。
那么问题来了,为什么C++不支持定义不确定长度的数组呢?当我们用如下代码时
int length;int array[length];编译器会报错。为什么会报错呢?因为编译的过程是是给代码分配内存空间的过程,编译器不知道length到底是多大,也就不知道给array[length]分配多大的内存空间。
那我们如何定义一个我们也不知道长度的数组呢?答曰:用指针。我们定义指针时,编译器只是分配了一个sizeof(*p)长度的空间,实际上,数组的空间还没有分配,只是在使用的时候才临时分配。
1、下面先定义一维动态数组:
int length;int *p=new int[length];数组定义完毕。
那么,如何对数组进行初始化呢?很简单,跟普通的数组初始化方式差不多。
for(int i=0;i<length;++i) p[i]=i;最后不要忘记释放内存delete[] p。
2、下面定义二位动态数组
二维数组的定义只是在一位数组的基础上加了个指针而已,即:指向指针数组的指针。
int col,row;cin>>col>>row;int **p=new int*[col];for(int i=0;i<col;++i)p[i]=new int[col];//建立一维数组每个元素指针指向的一维数组for(int i=0;i<col;++i)for(int j=0;j<row;++j)p[i][j]=j;for(int i=0;i<col;++i){for(int j=0;j<row;++j)cout<<p[i][j];cout<<endl;}
最后,同样不要忘记释放内存空间。
<pre name="code" class="cpp">for(int i=0;i<col;++i) delete[] p[row];//如果没有前一个[]则只会释放二维数组一个元素指向的一维数组对应的空间
注意:只要用到new就要用delete
0 0
- 如何定义动态一维二维数组
- C++ 如何定义动态二维数组?
- 定义动态二维数组
- 动态定义二维数组
- 动态定义二维数组
- 简洁明了,C++中动态定义一维数组,二维数组,三维数组
- 【转】C++中new动态定义一维数组,二维数组,三维数组
- 简洁明了,C++中动态定义一维数组,二维数组,三维数组
- C++中动态定义一维数组,二维数组,三维数组
- C++中动态定义一维数组,二维数组,三维数组的方法
- C动态一维数组,二维数组
- C++中定义一维二维数组
- 定义一维、二维、三维数组
- C语言中如何定义动态二维数组并输出
- 动态二维数组的定义
- 二维数组的动态定义
- C#定义二维动态数组
- C++动态定义二维数组
- 使用Node.js + MongoDB 构建restful API
- 第17条:以独立语句将new创建的对象存储在智能指针中
- 黑马程序员_Java基础_进制转换、基本数据类型、运算符、流程控制语句等
- 不知道栏目该叫什么名字怎么办?在线等,急!——CSS+DIV
- Java基本功练习九(多维数组强化一[五子棋、九个正面和背面、矩阵相乘])
- 如何定义动态一维二维数组
- hybrid应用的database locked问题
- 约瑟夫问题
- Linux文件权限(chmod)
- 3D图形渲染通道负载优化的几种小技巧
- QMosaic软件更新
- 游戏技术词汇解析---软阴影
- 黑马程序员_Java基础_String类
- Android控件开发之TabHost