当前位置:   article > 正文

c语言*p号的作用,c语言分析(*p)++和*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)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/79769
推荐阅读
相关标签
  

闽ICP备14008679号