会飞的鱼

2020
Godam
首页 » 学习笔记 » C++ 二维动态数组

C++ 二维动态数组

已知第一维

char* a[M];//指针的数组 
for(int i=0; i<M; i++)
a[i] = new char[n];
cout<<sizeof(a);//4*M 指针数组 
cout<<sizeof(a[0]);//4指针 
for(i=0; i<M; i++)
delete[] a[i];

两维都不知道

char **a;
a = new char* [m];//分配指针数组 
for(int i=0; i<m; i++)
a[i] = new char[n];
cout<<sizeof(a);//4,指针 
cout<<sizeof(a[0]);
for(i=0; i<m; i++)
delete[] a[i];
delete[] a;

已知第二维

char (*a)[N];//指向数组的指针 
a = new char[m][N];
cout<<sizeof(a);//4,指针 
cout<<sizeof(a[0]);//N 一维数组 
delete[] a;

已知第一维,一次分配内存

(保证内存连续性)
这个没看太懂啊

char* a[M];//指针的数组 
a[0] = new char[M*n];
for(int i=1; i<M; i++)
a[i] = a[i-1] + n;
cout<<sizeof(a);//4*M 指针数组 
cout<<sizeof(a[0]);//4 指针 
delete[] a[0];

两维都未知,一次分配内存

char **a;
a = new char* [m];
a[0] = new char[m*n];//一次性分配所有空间 
for(int i=1; i<m; i++)
a[i] = a[i-1] + n;
cout<<sizeof(a);//4 指针 
cout<<sizeof(a[0]);//4 指针 
delete[] a[0];
delete[] a;

我的理解

上面那些一次性分配感觉不太理解,似乎是空间全部申请下来之后再给每一段命名,似乎可以这样理解吧。
原文地址

文章如无特别注明均为原创! 作者: 果果, 转载或复制请以 超链接形式 并注明出处 GODAM|博客|godam
原文地址《 C++ 二维动态数组》发布于2020-4-7

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册

sitemap