中易网

请各位强人指点! 想在堆中分配二维动态数组,int** p=new (int*) [6];为什么不可以?p为二维数组名。

答案:4  悬赏:20  
解决时间 2021-02-15 06:08
请各位强人指点! 想在堆中分配二维动态数组,int** p=new (int*) [6];为什么不可以?p为二维数组名。
最佳答案
int ** p=new (int*)[6]; 声明一个6个元素的数组,数组每个元素都是一个int *指针,每个元素还可以单独申请空间,因为p的类型是int*型的指针,p++执行的是数组的递增,然后通过(p++)++实现在每个int *元素列表中进行递增;
int ** p = new int *[6];声明的是一个指针,每个指针元素是6个元素的数组。p++实现的是逐个int[6]的地址递加,然后在外侧再通过加地址实现每个6元数组的内部访问。

这里主要是由于符号的结合性造成的。
全部回答
单独写int*和(int*)无区别。 若后接数组下标,则不允许。 C++标准中的规定如此,与其他因素无关。 gcc的提示为:array bound forbidden after parenthesized type-id 。
int** p=new (int*) [6]; //应该改为:int (*p)[6]=new int[4][6]; 表示分配4个一维数组空间,并将第一个一维数组首地址赋给p。 int** p=new int*[6]; //表示分配6个元素的空间,每个元素都是整型指针。并将空间首地址赋给p,等号左右与右边类型一致,语句正确。
int a[size][size]; int **p = a; 这样是不行的 但是可以这样: int**p = (int**)malloc(sizeof(int*)*size); for (int i = 0; i < size; i++) { p[i] = (int*)malloc(sizeof(int)*size); } 然后就可以这么用了 p[i][j]。 想要指向二维数组,必须定义一个指向一维数组的指针 int (*p)[size] = a; 这样才能赋值。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
弱弱的问一句。。初三努力还有希望上重点么。
阳光宝宝母婴生活馆地址在什么地方,想过去办
@sina.com是什么邮箱
thousand of 的复数形式
建设银行信用卡到期了怎么办
我机器人2怎么样
批处理 在注册表下新建子项并将子项赋值
鸿旭通讯(张前路)在哪里啊,我有事要去这个地
叔叔对侄子有什么义务和责任
广州市花都区工伤鉴定到哪去做
一棵松树高4m,平均每年增高60cm,一颗杨树高
决定成立联合国会议是什么?
麻爪爪陈家桥店地址有知道的么?有点事想过去
我手指头没有劲,又怕疼。应该买什么样的吉他
我开了一家西餐厅,如何在大众人群中宣传,使
推荐资讯
情侣庆祝周年纪念日什么礼物有意义?
柳江新兴农垦农场工业区
“八班” 用德语怎么说?有人知道吗?
不怕学不成 就怕心不诚的意思写一短文
我们一家都是农村户口,我现在已结婚生子,原
脑筋急转弯,一个地方着火了,里面有500人逃出2
为什么用阿达帕林痘痘时好时坏
教学设计里有板书设计吗?
我来QQ,密码忘了,失去了好几年还能申请回来
陶瓷美工主要是做什么的??、、我等一下去面
指甲上有竖形条纹 说明缺什么
临桂区幼儿园(金山路)地址有知道的么?有点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?