C++的int (*p)[3]与int *p,int**p的区别

如上,还请解释一下newint[5][5]返回的是什么,请说的详细些,我的概念有些乱... 如上,还请解释一下new int[5][5]返回的是什么,请说的详细些,我的概念有些乱 展开
 我来答
358097271
2014-09-18 · TA获得超过165个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:167万
展开全部
int (*p)[3]表示p是个指向维度为3的二级指针相当于一个n行3列数组a[n][3],每一行的首地址;
int *p表示一个指向整形的指针;
int**p表示一个二级指针;
其中int (*p1)[3]与int**p2都是二级指针,对于二维数组来说我觉他们最大区别就是p1只能指向列数为3的二维数组的首地址;而p2可以指向任意二维数组首地址;同时要注意他们两者之间+ 、++ 等运算符的规律也不一样
朗怿
2014-09-18
知道答主
回答量:35
采纳率:0%
帮助的人:17.7万
展开全部
int (*p)[3],p是一个数组指针
int *p; p是一个指针变量
int **p; p是一个二级指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萨尔那加
推荐于2018-04-10 · 知道合伙人软件行家
萨尔那加
知道合伙人软件行家
采纳数:190 获赞数:464
毕业于那美克星麻省理工学院计算机专业,硕士学位,it行业10年从业经验,通读计算机类相关书籍。

向TA提问 私信TA
展开全部
int *p是指针,指向一个int类型;int **p是指针的指针指向int *类型(理解方便,可以理解为int *类型);int (*p)[3] 是指针的指针(二维数组指针),指向一个数组,而数组内容指向一个一维含3个元素的数组,简单讲即*p指向int[3]类型,当然*(p+1)....*(p+n)都指向一个一维含3个元素的数组,p本身指向一个数组。
new int[5][5]编译是通不过的,二维动态数组不是这样分配的,需要先申请int *类型数组,数组的元素再赋值为int [5]类型的数据即
int **p=new int*[5];
for(int i=0;i<5;++i)
p[i] = new int[5];
追问
可是我写的char(*p)[3]=new char[2][3];通过了编译啊,也运行了啊,我在VS2012上运行的
追答
不好意思,new char[2][3]可以通过,但是第二维3必须是常量而不能是变量,如果第一维和第二维都是变量,必须像我那个方式申请。
建议你可以多去csdn上逛逛,给你个链接
http://bbs.csdn.net/topics/20140388
技术交流还是去csdn
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式