- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态创建多维数组
C++?用new动态创建多维数组2008-01-25?22:36
作者:chenxuan 2008-04-12 20:45:45
标签: 杂谈 int *p [3];
p new int[2][3];
cout p p endl;
cout p[0] p[0] endl;
cout p[1] p[1] endl;
cout p[0] p[0] endl;
cout p[1] p[1] endl;
for int i 0;i 2;i++ for int j 0;j 3;j++ cout p[i][j] ;
输出:
pp[0]p[1]p[0]p[1]00382978 0038297C 0038298C
但如何真正动态的创建的一个多维数组呢,比如一个n*m的数组?
//错误代码
int n 10;
char *a [n];
a new char[n][m];
上面代码在VC6中错误:
F:\vc++\temp\temp.cpp 10 : error C2057: expected constant expressionF:\vc++\temp\temp.cpp 10 : error C2466: cannot allocate an array of constant size 0F:\vc++\temp\temp.cpp 12 : error C2540: non-constant expression as array boundF:\vc++\temp\temp.cpp 12 : error C2440: : cannot convert from char * [1] to char * []
正确的做法是先声明一个n维数组,每个单元是指向char的指针,再分别对每个单元分配内存.代码如下
char **array new char*[n];for int i 0;i n;i++ array[i] new char[m];
注意:上面代码在释放分配的内存时要特别注意。因为这是“深度内存分配”,所以释放时,要对每个单元里的指针指向的内存予以释放。释放内存代码如下:
for i 0;i n;i++ delete[] array[i];delete[] array;
郑巍动态数组剖析:
#include
using namespace std;
void main int m 2,n 2; int **p; p new int *[m]; for int i 0; i m; i++ p[i] new int[n];
cout p p endl;
cout p p endl;
cout p[0] p[0] endl;
cout p[1] p[1] endl;
cout p[0][0] p[0][0] endl;
cout p[0][1] p[0][1] endl;
cout p[1][0] p[1][0] endl;
cout p[1][1] p[1][1] endl; for i 0; i m; i++ cout p[ i ] p[i] endl; for i 0; i m; i++ delete[] p[i];
delete[] p; 输出:
pp[0]p[1] 0038297C
p[0][0] 003829B0
p[0][1] 003829B4
p[1][0] 003829E8
p[1][1] 003829EC
p[0] 003829B0
p[1] 003829E8
Press any key to continue
分析:
地址 内容 变量名 p 0012FF74p 003807A8p[0] 003807A8p[1] 003807ACp[0][0] 003807E0p[0][1] 003807E4p[1][0]p[1][1] 0038081Cp[0] 003807E0p[1]Press any key to continue 0012FF74 003807A8 p 003807A8 003807E0 p[0] 003807ACp[1] 003807E0 p[0][0] 003807E4 p[0][1] p
文档评论(0)