怎样new一个二维数组?
来源:互联网 发布:thinkphp b2b源码 编辑:程序博客网 时间:2024/06/10 06:49
方法之一:
int **p;
p=new int*[n];
for(i=0;i<n;i++)
p[n]=new int[n];
的方式来创建二位数组
这种方式虽然在用法上和静态2为数组一样,但是物理结构缺完全不同
对于int a[3][3],数组在内存中得分不是连续的
即:
[0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2]
而使用上面的方法创建的二位数组的内存分布是这样的
[0] [1] [2]
| | |
V V V
[0] [0] [0]
[1] [1] [1]
[2] [2] [2]
这使得我们必须以下标的方式访问数组
比如复制数组时必须使用
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
a[i][j]=b[i][j]
而不能使用比较高效的方式,如:
memcpy(a,b,sizeof(a));
在释放数组时必须使用
for(int i=0;i<m;i++)
delete[] a[i];
delete a;
int **p;
p=new int*[n];
for(i=0;i<n;i++)
p[n]=new int[n];
的方式来创建二位数组
这种方式虽然在用法上和静态2为数组一样,但是物理结构缺完全不同
对于int a[3][3],数组在内存中得分不是连续的
即:
[0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2]
而使用上面的方法创建的二位数组的内存分布是这样的
[0] [1] [2]
| | |
V V V
[0] [0] [0]
[1] [1] [1]
[2] [2] [2]
这使得我们必须以下标的方式访问数组
比如复制数组时必须使用
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
a[i][j]=b[i][j]
而不能使用比较高效的方式,如:
memcpy(a,b,sizeof(a));
在释放数组时必须使用
for(int i=0;i<m;i++)
delete[] a[i];
delete a;
- 怎样new一个二维数组?
- 怎样new一个二维数组?
- new一个二维数组
- new一个二维数组
- new一个二维数组
- 如何 new 一个二维数组
- 如何new一个二维数组
- c++中new一个二维数组
- c++中new一个二维数组
- C/C++ new 一个二维数组
- C++学习 new一个二维数组
- 怎样定义一个动态的二维数组?
- 二维数组new小结
- 二维数组new小结
- 二维数组new
- 二维数组new小结
- 二维数组new小结
- 二维数组new小结
- jsp 利用cookie 记住用户名和密码
- 整合Spring和Struts的几种方法
- crontab使用
- 关于RFC(Request For Comments)转
- windows下putty 连接linux远程管理
- 怎样new一个二维数组?
- sql server 多种方式 查找重复记录
- 嵌入式数据库系统Berkeley DB
- mtree的MAN帮助
- C/C++ 通用 Makefile
- [引用]Java程序员应该搞懂的六个问题
- 备份和恢复group和passwd
- 共享内存操作类(C#源码)
- 记录每个使用者的指令