
C语言指针和运算符优先级的问题
我定义一个二维数组的指针int(*p)[4],为什么*p要用括号括起来的,不要说不括起来就是指针数组了,这个我知道,我想从运算符优先级和结合性的角度解释。忘高手指点。。。...
我定义一个二维数组的指针 int (*p)[4],为什么*p要用括号括起来的,不要说不括起来就是指针数组了,这个我知道,我想从运算符优先级和结合性的角度解释。忘高手指点。。。
展开
3个回答
展开全部
[]和()的优先级是1,而*的优先级是2,优先级小的先处理,所以不加括号的*p[4],就等价于*(p[4]),所以先看p[4]这一部分,就类似a[4]表明这是一个数组,那么*(p[4])就类似*(p),表明是一个指针,由于先是数组,那么*(p[4])就是一个以指针为元素的数组,同理 (*p)[4],先是指针,再是数组(注意1级运算符先左后右),那么就是一个指向数组的指针
展开全部
[ ]优先级比*的高,不加()时是先运算p[ ],它是数组,然后运算*,才是指针,也就是 *(p[ ]),表示的是一个指向数组的指针;
而 ( *p ) [ ],先运算*,是指针,然后运算[ ],是数组,也就是由多个指针构成的指针数组。
而 ( *p ) [ ],先运算*,是指针,然后运算[ ],是数组,也就是由多个指针构成的指针数组。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
()的优先级 高啊。所以表示*p有四个整数类型的元素
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询