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

Author Avatar
kdwycz 8月 12, 2012
  • 在其它设备中阅读本文章

昨天开始学习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;

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

本站所有原创内容均以 署名-非商业性使用-相同方式共享 4.0 (CC BY-NC-SA 4.0) 协议授权
本文链接:https://blog.kdwycz.com/archives/cpp-points/