关于C++指针与 ++运算的纠结关系

昨天开始学习C++指针,一开始就犯了个错误 p++ 原意是p=p+1;错误的原因是 间接寻址运算符优先度比++(后缀)低。p++ 是让地址增加而不是数据增加;

@李绵 学姐为了给我说明++ –和指针,给我了一道题

int a[]={1,2,3,4,5}. 最初*p=a 依次写出 *p *(++p) (*p)++ *p *p– –(*p) *p

以下为我在@李绵 学姐指导下的最终答案

  1. p :p指向a[0] 所以p==1;
  2. (++p):p指向a[1] 所以(++p)==2;
  3. (*p)++:p指向a[1]并把a[1]加一,因为++是后缀,所以此时(*p)++==2; 之后a[1]==3;
  4. p :p指向a[1] 所以p==3;
  5. *p–:p指向a[0] 以为–是后缀,所以 此时(*p–) == a[1 ]== 3; 之后 p指向a[0];
  6. –(*p):p指向a[0]并把a[0]减一,所以 –(*p)==0;
  7. p :p指向a[0] 所以p==0;

最后吐个槽。。。。为什么我开始用;代替。了


关于C++指针与 ++运算的纠结关系
https://blog.kdwycz.com/archives/cpp-points/
作者
kdwycz
发布于
2012年8月12日
许可协议