来自http://blog.csdn.net/maverick1990/article/details/22829135

一维数组

动态分配,int *array = new int[10]

初始化,memset(array,0,sizeof(int)*10);

撤销,delete[] array

二维数组m行n列

int **d;
d = new int *[];
for(int i =;i<;i++){
d[i] = new int[]
}

先分配一个10单元的数组指针的指针的首地址给**d,然后对其每个首地址进行遍历,

完成一个5单元的数组的动态分配,并把首地址给*d[i],最后完成d[10][5]的动态分配。

怎么初始化二维数组?

void memset(void* dest,int c,size_t count)////

sets buffers to a specified character.

memset只能作用于一个一维数组的void *dest,因此最好的方法就是和二维数组的动态分配,

memset最好用来初始化数组为零,初始化bool数组

结合起来,new一个,memset一个。

例如:

int **d;
d = new int *[];
for(int i = ;i<;i++){
d[i] = new int[];
memset(d[i],,*sizeof(int));///当sizeof一个指针时,返回值为指针本身的大小而不是指针指向区域的大小,
      ///所以第三个要明确空间大小,不能sizeof(d[i]).
}

如何撤销?

for(int i = 0;i<10;i++){

delete[] a[i];

}

delete[] a;

=========================

来个例子,

class A{
public:
void test_memset(){
///============
int *d;
d = new int[];
memset(d,-,sizeof(int)*);
for(int i = ;i<;i++){
cout<<d[i]<<" ";
}cout<<endl;
delete[] d;
///==============
int **a;
a = new int*[];
for(int i = ;i<;i++){
a[i] = new int[];
memset(a[i],-,sizeof(int)*);
}
for(int i = ;i<;i++){
for(int j = ;j<;j++){
cout<<a[i][j]<<" ";
}cout<<endl;
}
for(int i = ;i<;i++){
delete[] a[i];
}
delete[] a; ///====================
int ***c;
c = new int**[];
for(int i = ;i<;i++){
c[i] = new int*[];
for(int j = ;j<;j++){
c[i][j] = new int[];
memset(c[i][j],-,sizeof(int)*);
}
} for(int i = ;i<;i++){
for(int j = ;j<;j++){
for(int k = ;k<;k++){
cout<<"i-j-k"<<i<<j<<k<<"~"<<c[i][j][k]<<" ";
}cout<<endl;
}cout<<endl<<endl;
}
///=========== for(int i = ;i<;i++){
for(int j = ;j<;j++){
delete[] c[i][j];
}
delete[] c[i];
}
delete[] c;
cout<<"destoryed done!"<<endl;
}
};

二维数组的动态分配(new)、初始化(memset)和撤销(delete)的更多相关文章

  1. C++二维数组讲解、二维数组的声明和初始化

    我们知道,一维空间是一条线,数学中用一条数轴来表达:二维空间是一个平面,数学中用平面坐标系来表达.那么二维数组又是什么样的呢? 线与面 我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线 ...

  2. [zt]C++二维数组讲解、二维数组的声明和初始化

    定义: int *pia = new int[10]; // array of 10 uninitialized ints 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向 ...

  3. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  4. C指针 指针和数组 二维数组的指针 指针应用

    直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...

  5. JS的二维数组

    今天,记录一下JS的二位数组,并附上例题. 一.二维数组的本质:数组中的元素又是数组. 其实,我们都见过这样的二维数组,只不过没在意罢了,例如: var arr = [[1,2,4,6],[2,4,7 ...

  6. c++用vector创建二维数组

    1 vector二维数组的创建和初始化 std::vector <int> vec(10,90); //将10个一维动态数组初始为90std::vector<std::vector& ...

  7. Java编程基础阶段笔记 day06 二维数组

    二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 ...

  8. C#学习笔记04--排序/查找/二维数组/交叉数组

    一. 冒泡排序(重点) 思路:  每次比较把较小的放在前面, 大的放到后面; 图解:下图是最坏情况下的排序 ` 冒泡排序m个元素, 就有(m-1)趟排序, 第一趟m-1次, 第二趟 m-2次....  ...

  9. C++二维数组(指针)做参数

    一.问题描述 使用C++编程过程中经常需要使用到二维数组,然而初级程序员在使用过程中经常会出错使程序崩溃.下面就二维指针的定义,初始化,以及二维指针做参数给出简单介绍. 1.二维数组的定义与初始化 在 ...

随机推荐

  1. LeetCode OJ 3Sum 3个整数之和

    题意:给一个vector<int>容器,要求每当找到3个元素之和为0时就将这3个数按大小顺序记下来,用一个二维vector返回.也就是vector< vector<int> ...

  2. 远程链接mongoDB robomongo

    墙裂推荐一个软件robomongo 下载地址:https://robomongo.org/download 最初不用这个软件的时候需要shell链接mongoDB,折腾了半天结果版本不匹配 用robo ...

  3. 【BZOJ4458】GTY的OJ(树上超级钢琴)

    点此看题面 大致题意: 给你一棵树,让你求出每一个节点向上的长度在\([l,r]\)范围内的路径权值和最大的\(m\)条路径的权值总和. 关于此题的数列版本 此题的数列版本,就是比较著名的[BZOJ2 ...

  4. 【BZOJ1854】[SCOI2010] 游戏(匈牙利算法的应用)

    点此看题面 大致题意: 有\(n\)个物品,每个物品有两个属性且只能选择其中的一个,要求选择的物品属性值从\(1\)开始递增,问最多能选多少个. 暴搜 看到这题,我第一反应是暴搜... ... 好不容 ...

  5. 在PHP中读取二进制文件

    很多时候,数据并不是用文本的方式保存的,这就需要将二进制数据读取出来,还原成我们需要的格式.PHP在二进制处理方面也提供了强大的支持. 任务 下面以读取并分析一个PNG图像的文件头为例,讲解如何使用P ...

  6. IIS6.0开启gzip压缩

    双击IIS服务器,右键点击网站,点击属性,然后点击服务,我们看到HTTP压缩,然后在压缩应用程序文件,压缩静态文件中打钩,然后点击确定,第一步就完成了   然后我们右键点击web服务扩展,点击添加一个 ...

  7. PAT (Basic Level) Practise (中文)- 1001. 害死人不偿命的(3n+1)猜想 (15)

    http://www.patest.cn/contests/pat-b-practise/1001 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那 ...

  8. Java控制语句例题,for循环语句,if条件语句等,Scanner类与Random类,Math.max()方法

    例题:编写程序,生成5个1至10之间的随机整数,并打印结果到控制台 import java.util.Random;class demo09 { public static void main(Str ...

  9. git常用命令以及速查命令

    工作中使用的是git,所以写这个只是为了加深自己的记忆,提高熟练度 共勉~ git 主要命令 要关联一个远程库,使用命令git remote add origin git@server-name:pa ...

  10. 两个list缩进为一个list,python

    # w_list = ['a', 'b', 'c', 'd'] # e_list = ['c', 'd', 'b', 'a'] w_list = ['a', 'b', 'c', 'd', 'ff', ...