动态创建多维数组.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 expression F:\vc++\temp\temp.cpp 10 : error C2466: cannot allocate an array of constant size 0 F:\vc++\temp\temp.cpp 12 : error C2540: non-constant expression as array bound F:\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 0012FF74 p 003807A8 p[0] 003807A8 p[1] 003807AC p[0][0] 003807E0 p[0][1] 003807E4 p[1][0]p[1][1] 0038081C p[0] 003807E0 p[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)

wt60063 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档