C语言指针和运算符优先级的问题

2024-12-19 04:35:01
推荐回答(3个)
回答1:

[]和()的优先级是1,而*的优先级是2,优先级小的先处理,所以不加括号的*p[4],就等价于*(p[4]),所以先看p[4]这一部分,就类似a[4]表明这是一个数组,那么*(p[4])就类似*(p),表明是一个指针,由于先是数组,那么*(p[4])就是一个以指针为元素的数组,同理 (*p)[4],先是指针,再是数组(注意1级运算符先左后右),那么就是一个指向数组的指针

回答2:

[ ]优先级比*的高,不加()时是先运算p[ ],它是数组,然后运算*,才是指针,也就是 *(p[ ]),表示的是一个指向数组的指针;
而 ( *p ) [ ],先运算*,是指针,然后运算[ ],是数组,也就是由多个指针构成的指针数组。

回答3:

()的优先级 高啊。所以表示*p有四个整数类型的元素