动态创建二维数组
来源:互联网 发布:sql server授予权限 编辑:程序博客网 时间:2024/05/27 20:50
int **p;
p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组
for (int i = 0; i != 10; ++i)
{
p[i] = new int[5];
}
这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素指向一个有5个元素的数组,这样就构建了一个10行5列的数组。
当数组使用完毕,释放空间的代码是:
for(int i = 0; i != 5; i++)
{
delete[] p[i];
}
delete[] p;
处理二维数组,可以用降维或是二维法。
降维法是用一位数组来接受二维数组,将二维元素的首地址&a[0][0]作为参数,传递给函数,函数用int *接受。
二维法就直接用二维数组来接受,但是需要指定列数。
如要想创建一个[m][n]的二维数组。
下面为通过动态创建一个指针数组的方法来动态创建二维数组的方法。
C版本:
double **data;
data = (double **)malloc(m*sizeof(double *));
for(int j=0;j<m;j++)
{
data[j] = (double*)malloc(n*sizeof(double)); //这个指针数组的每个指针元素又指向一个数组。
}
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
data[i][j]=i*n+j;//初始化数组元素
}
}
for (i=0;i<m;i++)
{
free(data[i]); //先撤销指针元素所指向的数组
}
free(data);
C++版本:
double **data;
data = new double*[m]; //设置行 或直接double **data=new double*[m]; 一个指针指向一个指针数组。
for(int j=0;j<m;j++)
{
data[j] = new double[n]; //这个指针数组的每个指针元素又指向一个数组。
}
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
data[i][j]=i*n+j;//初始化数组元素
}
}
for (i=0;i<m;i++)
{
delete[] data[i]; //先撤销指针元素所指向的数组
}
delete[] data;
这种方法是通过先动态创建一个指针数组,然后为指针数组的每个元素再动态指向一个数组的办法来完成的。其创建过程与销毁过程两样重要。
在销毁的过程,先销毁指针数组每个元素指向的数组,然后再销毁这个指针数组。
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 创建二维动态数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 动态创建二维数组
- 创建动态二维数组
- 动态创建二维数组
- bmob根据时间排序分页查询多条数据
- 2016年1月7日
- PHP利用token防止表单重复提交
- Linux tcpdump命令详解
- 新的一年展望
- 动态创建二维数组
- Hadoop集群之Hive安装配置
- Swift入门———循环
- 代码比较软件Beyond Compare
- tftp搭建记录
- Android Studio 配置 android annotations
- String,StringBuffer与StringBuilder的区别
- GetSystemTime
- relative,absolute,static,fixed定位问题