c++创建二维数组的方法
用malloc函数创建二维数组
1 |
|
解释
1
用malloc函数创建二维数组需调用#include<stdlib.h> 库函数,且需要判断内存是否分配成功 一般情况下都会成功,以防万一
2
用该方法分配的内存空间不连续,不能通过 array[i * width + j] 访问数组
3
初始化函数 memset函数原型
void * memset (void * p,int c,size_t n);
memset函数以字节为单位进行赋值,故对int double型时只能赋值0
详细解释参见浅谈C中malloc和memset函数.
用new运算符创建二维数组
1 |
|
解释
1
用new运算符请求的内存同样不连续
2
new的初始化更多细节参见new的初始化.
3
关于new与malloc的区别参见new和malloc的区别.这篇文章讲的很详细,建议看一下
特别注意new malloc分配的内存空间都在堆中
使用STL中的容器类创建二维数组
1 |
|
解释
1:使用vector创建二维数组需要导入#include
2: 这种方式创建的二维数组内存连续,可以使用array[i * width + j]访问数组,且并不需要内存回收,故推荐使用这种方式
另外
vector的元素被初始化为与其类型相关的缺省值:算术和指针类型的缺省值是 0,对于class 类型,缺省值可通过调用这类的缺省构造函数获得,我们还可以为每个元素提供一个显式的初始值来完成初始化,例如
vector< int > ivec( 10, -1 );
定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1 不需要回收空间
第一次写博客,如有不足之处,望请提出