C语言——指针加减

(1)加减

  1. *p+1
    值+1

    #include<stdio.h>
    int main(){
     int i[] = {10, 20, 30, 40, 50};
     int *p = i;
    printf("%d",*p+1); // 11
     return 0;
    }
    
  2. p+1
    地址加一

    #include<stdio.h>
    int main(){
     int i[] = {10, 20, 30, 40, 50};
     int *p = i;
    printf("%d",p+1); // 6422020等同于&i[1]
     return 0;
    }
    

(2)自增自减

  1. *p++等同于 *(p++)
    先取值,然后指针向后移动一位

    #include<stdio.h>
    int main(){
     int i[] = {10, 20, 30, 40, 50};
     int *p = i;
    printf("%d",*p++); // 10
    printf("%d",*p); // 20
     return 0;
    }
    
  2. (*p)++
    先取值,然后值+1

    #include<stdio.h>
    int main(){
     int i[] = {10, 20, 30, 40, 50};
     int *p = i;
    printf("%d",*p++); // 10
    printf("%d",*p); // 11
     return 0;
    }
    
  3. ++*p
    *p的值+1

    #include<stdio.h>
    int main(){
     int i[] = {10, 20, 30, 40, 50};
     int *p = i;
    printf("%d",++*p); // 11
    printf("%d",*p); // 11
     return 0;
    }
    

(3)相加相减

  1. 相加无意义

  2. 相减
    指针相减并不是字节数差值,而是距离,(p1地址-p2地址)/sizeof(int)

    #include<stdio.h>
    int main(){
     int i[] = {10, 20, 30, 40, 50};
     int *p1 = &i[1];
     int *p2 = &i[3];
    printf("%d",p1); // 6422004
    printf("%d",p2); // 6422012
    printf("%d",p2-p1); // 2
     return 0;
    }
    
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值