C++的int (*p)[3]与int *p,int**p的区别
3个回答
展开全部
int (*p)[3],p是一个数组指针
int *p; p是一个指针变量
int **p; p是一个二级指针
int *p; p是一个指针变量
int **p; p是一个二级指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-04-10 · 知道合伙人软件行家
关注
展开全部
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];
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询