关于C++指针与 ++运算的纠结关系
昨天开始学习C++指针,一开始就犯了个错误 p++ 原意是p=p+1;错误的原因是 间接寻址运算符优先度比++(后缀)低。p++ 是让地址增加而不是数据增加;
@李绵 学姐为了给我说明++ –和指针,给我了一道题
int a[]={1,2,3,4,5}. 最初*p=a 依次写出 *p *(++p) (*p)++ *p *p– –(*p) *p
以下为我在@李绵 学姐指导下的最终答案
- p :p指向a[0] 所以p==1;
- (++p):p指向a[1] 所以(++p)==2;
- (*p)++:p指向a[1]并把a[1]加一,因为++是后缀,所以此时(*p)++==2; 之后a[1]==3;
- p :p指向a[1] 所以p==3;
- *p–:p指向a[0] 以为–是后缀,所以 此时(*p–) == a[1 ]== 3; 之后 p指向a[0];
- –(*p):p指向a[0]并把a[0]减一,所以 –(*p)==0;
- p :p指向a[0] 所以p==0;
最后吐个槽。。。。为什么我开始用;代替。了
关于C++指针与 ++运算的纠结关系
https://blog.kdwycz.com/archives/cpp-points/