error C2440: 'initializing' : cannot convert from 'int (*)[4]' to 'int *' Types pointed to are un

#include<iostream>#include<string>usingnamespacestd;intmain(){int*pi=newint[2][4];//c... #include <iostream>
#include<string>

using namespace std;

int main()
{

int* pi=new int[2][4];

//cout<<*pi<<" "<<pi<<endl;
delete pi;
return 0;
}

编译时出现如下错误请解释一下?
error C2440: 'initializing' : cannot convert from 'int (*)[4]' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
展开
 我来答
迷雾心魔
2011-09-30 · TA获得超过174个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:110万
展开全部
int * pi = new int[2][4] 应该改成 int **pi = new int[2][4] 或者改成 int *pi = new[2]。主要看你想怎么用,
而且如果你知道你在做什么的话可以改成 int *pi = (int*) new int[2][4];
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松甜恬0Je4ba
2011-09-29 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3356万
展开全部
二维数组的空间分配不是这样的,正确的做法是这样的:
int ** pi = new int[2];
int i;
for(i=0;i<2;i++)
{
pi[i] = new int[4];
}

删除时,
for(i=0;i<2;i++)
{
delete []pi[i];
}
delete []pi;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式