来自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. linux 命令——15 tail (转)

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新, ...

  2. World Wind Java开发之九——阶段小结(转)

    http://blog.csdn.net/giser_whu/article/details/42785875 将近一个月没有更新了,一是因为项目的事情,二是期末考试复习,三是玩啦.上一篇博客搭建起了 ...

  3. geoWithin查询 多边形查询

    $geoWithin查询 形状的表示 .$box:矩形,使用 {$box:[[<x1>,<y1>],[<x2>,<y2>]]}表示 都是坐标,第一个坐标 ...

  4. Java 发送 Https 请求工具类 (兼容http)

    依赖 jsoup-1.11.3.jar <dependency> <groupId>org.jsoup</groupId> <artifactId>js ...

  5. 文件系统inodes使用率过高问题处理

    运维过程中经常碰见文件系统inodes使用率过高导致文件系统不可写的问题,常见场景如下 .Oracle产生的审计文件,特别是DG备库或者审计设置为OS时 .crontab产生大量邮件,导致/var/s ...

  6. vue框架初学习的基本指令

           学习地址:<ahref="https: cn.vuejs.="" org="" "="" targe ...

  7. 【转】【win网络编程】socket中的recv阻塞和select的用法

    在编写ftp客户端程序时,在联通后使用recv函数进行接收欢迎信息时,需要申请内存进行接收数据保存,一次读取成功,但是由于一个随机的ftp服务端在说,欢迎信息的大小是不知道的,所以在尝试使用死循环,在 ...

  8. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  9. 三十一、MySQL 及 SQL 注入

    MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入 ...

  10. Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑

    django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmin貌似跟不上节 ...