为什么int *a[n]=new int[n][n];报错呢?真的就不能用new int[][]吗

为什么int *a[n]=new int[n][n];报错呢?真的就不能用new int[][]吗

社区

C语言 帖子详情 为什么int *a[n]=new int[n][n];报错呢?真的就不能用new int[][]吗 chu51 2001-05-18 10:23:00 如何动态分配二维数组(n*n)?

我说的可不是

int *a[n]=new int *[n];

for(int i=0;i

a[i]=new int[n];

能不能一步到位?

为什么

int *a=new int[n][n];

报错呢?

请顺便解释一下new和delete的机制?

...全文

1778 35 打赏 收藏 为什么int *a[n]=new int[n][n];报错呢?真的就不能用new int[][]吗 如何动态分配二维数组(n*n)? 我说的可不是 int *a[n]=new int *[n]; for(int i=0;i

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 35 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 devilhjf 2001-06-22 打赏举报 回复 wei97081116(韦小宝)的正确!!!

spirix 2001-06-22 打赏举报 回复 // 假如你要分配一个M*N的二维数组,完全可以实现动态的分配,如下:

#include

#define M 10

#define N 10

void main(void)

{

int (*p)[N];

int *p1=new int[M*N];

for(int i=0;i

p1[i]=i;

p= (int (*)[N]) p1;

for(i=0;i

for(int j=0;j

{ printf("p[%d][%d]=%d \n",i,j,p[i][j]);}

return;

}

//将来要删除的时候执行下面的代码:

delete[] p1;

p1=NULL;

p=NULL; nuaalj 2001-06-21 打赏举报 回复 不能用new直接生一个二维数组a[i][j],但可以生成一个一维数组a[i*j]来模拟这个二维数组。 kimryo 2001-06-21 打赏举报 回复 cannot convert from 'int (*)[1]' to 'int *[]

不能将 指向具有一个元素的列指针 转化为 指针数组。 kalling 2001-05-26 打赏举报 回复 C++ 不支持重载 operator [][] !!!!!!!!!! laozhongcheng 2001-05-26 打赏举报 回复 如果不使用地址来进行地址偏移操作的话(?),就是说不进行*(b+1)=5这样子的操作的话,使用vector来模拟动态数组,见《程序员》杂志。 chu51 2001-05-24 打赏举报 回复 还是重载把

joe_fox1025 2001-05-23 打赏举报 回复 能否进一步讲解? wxhacker 2001-05-23 打赏举报 回复 我同意glhorse的看法。。。

kalling的更好理解。。。 EthanJiang0827 2001-05-23 打赏举报 回复 to 小宝

你的后面可以是一个变量吗? kalling 2001-05-22 打赏举报 回复 指针数组:假设在32位下,int * a[10];则a指向一块内存,每4个字节是一个(int *),而这每个指针又分别指向一块int的内存(通过a[i]=new int[10]分配),所以在内存上不连续

二维数组:a[10][10],a指向一大块内存,大小为sizeof(int)*100,内存连续,事实上,编译时就已经将二维数组转变为int *了,做法是:a[n][m]->a[n*10+m],

所以说第二维的大小一定要静态给出,以便编译器转换 铜戈 2001-05-22 打赏举报 回复 to wei97081116(韦小宝)

你的方法只能在一维数是常数的情况下

WQ 2001-05-21 打赏举报 回复 我的没错

MSDN库上的标准 EthanJiang0827 2001-05-21 打赏举报 回复 自己写一个类,构造二维数组,以后不久一直可以用了吗?

至少我是这样做的,因为我不知道C++,可以那样的定义二维数组。写一个类吧。 zzj4 2001-05-20 打赏举报 回复 用C还是VC++? fatty 2001-05-20 打赏举报 回复 一次能new一个指向指针的指针? chu51 2001-05-20 打赏举报 回复 但有没有高手来一个一次到位的method?

就是不用循环动态分配?

duz 2001-05-20 打赏举报 回复 回zzj4(zzj) ,都一样,你也可以用new char[]来代替malloc chu51 2001-05-20 打赏举报 回复 是啊,我作了一个行列式的求值程序

用了递归,An=a00*A00+a01*A01+...+a0n-1*A0n-1

我想用动态分配数组做,每次分配一个i*i的数组储存A0i-1;

再层层递归,累加。。。。

但要注意动态数组的生命期。

好象int**p=new int[n][n];也不行

我后来知道用

int *a[n]=new int *[n];

for(int i=0;i

a[i]=new int[n];

但有没有高手来一个一次到位的method?

xuliye 2001-05-20 打赏举报 回复 我哭。。。。555555......

只要你用 new delete

就是去问Bjarne Stroustrup 他也没有一步到位的方法!!!图省事别用递归呀。 加载更多回复(15) 2022年学校网络安全保障工作总结报告.docx 2022年学校网络安全保障工作总结报告.docx 2022Java程序员面试题集.docx 2022Java程序员面试题集.docx 2022代理软件销售协议书.docx 2022代理软件销售协议书.docx 2022光环项目管理流程.docx 2022光环项目管理流程.docx 2022常用网络爱情语句.docx 2022常用网络爱情语句.docx

C语言

70,026

社区成员

243,262

社区内容

发帖 与我相关 我的任务 C语言 C语言相关问题讨论 复制链接

扫一扫 分享 确定 社区描述 C语言相关问题讨论 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章

相关推荐

疤痕治疗市场规模
365速发官网

疤痕治疗市场规模

📅 07-01 👀 8230
法国国家足球队
365账号限制投注怎么办

法国国家足球队

📅 06-29 👀 5710
《战狼2》内地票房已超56亿 与92国角逐本届奥斯卡最佳外语片