c语言*p号的作用,c语言分析(*p)++和*p++的不同含义

337005

其实是这样的,p储存的是地址,*p代表这个地址储存的值。p++是指地址的自增,(*p)++表示地址储存的值的自增。按顺序走。int *p=a;数组名表示地址,这句话的含义是定义一个指针p并将数组a的首地址赋值给pprintf("%d,",*p);现在p的值为数组a的首地址,*p表示a数组中第一个元素printf("%d,",*(++p));先将地址自增,再*p,此时p储存的为数组中第二个元素的地址,*p即表示数组中第二个元素的值(也就是2)printf("%d,",(*p)++);此时p储存的为数组中第二个元素的地址,先*p再使这个地址储存的值自增(也就是先输出2再把2自增),在这个过程中p储存的地址没有变化,不过数组中第二个元素已经由2变为了3。即数组a为{1, 3, 3, 4, 5}printf("%d,",*p);此时p储存的为数组中第二个元素的地址,*p,输出此地址储存的值,输出数组中第二个元素的值(也就是3)printf("%d,",*p--);根据符号结合顺序,*p--其实可以写作*(p--),因为是右自减,所以先*p再自减(这个自减指的是p的自减,也就是地址的自减)。*p时输出数组中第二个元素的值(也就是3),p自减后p中储存的值变为数组中第一个元素的地址(即数组首地址)。printf("%d,",--(*p));因为是左自减,所以先自减再*p。这个自减指的是*p(即p中储存的地址所对应的值)的自减,自减后数组a中第一个元素由1变为0,*p输出0。此时数组a为{0, 3, 3, 4, 5}怕你搞混,在此说一下。*(p--) 指的是先输出地址所对应的值,然后地址本身自减(在数组中前移1位)(*p)-- 指的是先输出地址所对应的值,再把这个值自减(没有地址的增减,即没有移位)--(*p) 指的是先把地址对应的值自减,在输出这个值(没有地址的增减,即没有移位)*(--p) 指的是先地址本身自减(在数组中前移1位),然后输出自减后的地址所对应的值希望能区分开。继续。printf("%d\n",*p);指输出此时地址所对应的值,也就是第一个元素的值(即0)。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值