double** arr = new double[m][n]; 为什么错了???

lovesi3344 2010-02-07 09:42:45
动态分配一维数组
double * arr = new double[m];
没错

但是动态分配二维数组
下面这样为什么是错的??
double** arr = new double[m][n];

怎么动态的分配二维数组??


这个问题应该还有点技术含量吧??!!

大侠们进来留下点痕迹
谢了
...全文
1563 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovesi3344 2010-02-07
  • 打赏
  • 举报
回复

多谢各位大侠拔刀相助

短短几分钟被你们说明白了

traceless 2010-02-07
  • 打赏
  • 举报
回复
只想 ===》 指向

faint~~~

traceless 2010-02-07
  • 打赏
  • 举报
回复
double** arr = new double *[m];
二级指针又名指向指针的指针。*[m],先是数组,然后指针。也就是有m个double型指针的数组

第二步 arr[i]=new double[n]; 再申请n个doulbe空间,one of m 只想这个空间
cattycat 2010-02-07
  • 打赏
  • 举报
回复 2
第一维没有分配空间。

double** arr = new double*[m];
然后
for(int i=0;i<m;i++)
arr[m]= new double[n];
删除的时候也要注意。
或者直接
double (*arr)[n]= new double[m][n];
go_Michael 2010-02-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lovesi3344 的回复:]
double** arr=newdouble*[m];
这句看不懂  *[m]看起来很陌生
那个*是乘号还是指针解引用??
麻烦你了

引用 4 楼 mstlq 的回复:
C/C++ code
double** arr=newdouble*[m];
for(int*i=0;i <m;++i)
    arr[i]=new double[n];
for(int*i=0;i <m;++i)
    delete []arr[i];
delete []arr;

[/Quote]

new double *[m]中*表示指针的意思
即动态开辟了一个指针数组,每个元素即为一个指针,
for(int*i=0;i <m;++i)
    arr[i]=new double[n];
对每个指针进行动态开辟
lovesi3344 2010-02-07
  • 打赏
  • 举报
回复

double** arr=newdouble*[m];
这句看不懂 *[m]看起来很陌生
那个*是乘号还是指针解引用??
麻烦你了

[Quote=引用 4 楼 mstlq 的回复:]
C/C++ code
double** arr=newdouble*[m];
for(int*i=0;i<m;++i)
arr[i]=new double[n];
for(int*i=0;i<m;++i)
delete []arr[i];
delete []arr;
[/Quote]
traceless 2010-02-07
  • 打赏
  • 举报
回复
这么多方法

比较直观的

double (*arr)[n] = new double[m][n];


go_Michael 2010-02-07
  • 打赏
  • 举报
回复
double** arr = new double*[m];
for(int i=0;i<n;i++)
arr[i]=new double[n];
mstlq 2010-02-07
  • 打赏
  • 举报
回复
double** arr = new double*[m]; 
for(int *i=0;i<m;++i)
arr[i]= new double[n];

for(int *i=0;i<m;++i)
delete []arr[i];
delete []arr;
lovesi3344 2010-02-07
  • 打赏
  • 举报
回复
怎么实现动态内存分配二维数组啊

呜呜呜

[Quote=引用 1 楼 traceless 的回复:]
???

语法啊 LZ
[/Quote]
Waiting4you 2010-02-07
  • 打赏
  • 举报
回复
const int m = 10;
const int n = 20;
typedef double arr_t[n];
arr_t* arr = new double[m][n];

for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
arr[i][j] = i*j;
return 0;
traceless 2010-02-07
  • 打赏
  • 举报
回复
???

语法啊 LZ

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧