C++中*和++联合使用的优先级

本文详细解释了C++中各种指针操作,如++*p、*++p、(*p)++、&++p和*(p++)的使用场景和影响,重点强调了值操作与指针操作的区别以及后置递增的执行顺序。
摘要由CSDN通过智能技术生成

#include<iostream>
using namespace std;

*和++组合有一下几种情况

//1.++*p  2.*++p   3.++(*p)  4.*(++p)
//5.*p++  6.(*p)++ 7.*(p++)               

int main() {
    int arr[] = { 5,3,8,2,7,2,6,3,9,0 },*p;
    p = arr;
    //1.++*p  
    cout<< ++*p<<"  "<<*p<<endl;//6 6  前自增再表达式前操作
    //先*p 再++  p未发生偏移,但数组的arr[0]变为6了        
    //此时arr[]={6,3,8,2,7,2,6,3,9,0};        p->arr[0]

    //2.*++p
    cout << *++p << " " << *p << endl;//3  3
    //先++  后*  p指向改变 当前未改变数组数据   
    //此时arr[]={6,3,8,2,7,2,6,3,9,0};        p->arr[1]

    //3.++(*p)同1.++*p 
    cout << ++(*p) << " " << *p << endl;//4  4  
    //此时arr[]={6,4,8,2,7,2,6,3,9,0};        p->arr[1]

    //4.*(++p)
    cout << *(++p) << " " << *p << endl;//8 8 
    //先++ 后*  p指向改变  当前未改变数组数据  
    //此时arr[]={6,4,8,2,7,2,6,3,9,0};        p->arr[2]

    //5.*p++
    cout << *p++ << " " << *p << endl;//8 2
    //先*p 后++ p指向改变 当前未改变数组数据   
    //先* 表达式 *p++ 结束后再++ 意思当输出*p++时会先输出*p再++  后面再输出*p时就是++后的值
    //此时arr[]={6,4,8,2,7,2,6,3,9,0};        p->arr[3]


    //6.(*p)++  表示将解引用后的值++   注意与5.*p++的区别    
    cout << (*p)++ << " " << *p << endl;//2  3     
    //由于++是在表达式结束后在操作,所以输出(*p)++时,还是会先输出*p,在后面输出*p时就是++后的值
    //此时arr[]={6,3,8,3,7,2,6,3,9,0};         p->arr[3]


    //7.*(p++)等同于*p++ 先* 再++     在*(p++)表达式中,虽然()的优先级比*更高,
    //由于(p++)是一个后置递增运算符,所以也是在表达式*(p++)先*p结束后再++    后置递增递增一定是在表达式结束后再操作  与前置递增相反
    cout << *(p++) << " " << *p << endl;//3 7       
    //此时arr[]={6,3,8,3,7,2,6,3,9,0};         p->arr[4]

//总结:注意的点   

//1.++(*p)同1.++*p,++都是对值操作,而*p++中++是对指针的操作,(*p)++中++是对值进行操作

//2.输出后置递增++时,注意++操作是在表达式结束后,如第5、6、7点

    system("pause");
    return 0;
}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值