首页 > 技术文章 > C语言中*p++ ,(*p)++ ,*++p ,++*p的区别

Xuxiaokang 2021-12-21 10:39 原文

  1. *p++---先取指针p指向的值(数组第一个元素),再将指针p自增1;
    *号和++(单目运算)两个处于同一优先级,结合方向是自右向左,但是前提是当++在变量前面的时候才处理同一优先级,当++在变量之后时,++的优先级可以看成最低级的,比逗号运算符的优先级还低。

  2. (*p)++---先取指针p指向的值(数组第一个元素),再将该值自增1;

  3. *++p---先将指针p自增1(此时指向数组第二个元素),再取出该值;

  4. ++*p---先取指针p指向的值(数组第一个元素),再将该值自增1;

    #include<stdio.h>
    int Data[2] = {100,200};
    int more[2] = {300,400};
    
    int main(void)
    {
        int *p1,*p2,*p3;
        p1 = p2 = Data;
        p3 = more;
        printf("*p1 = %d,  *p2 = %d,  *p3 = %d\n",*p1,*p2,*p3);
        printf("*p1++ = %d,  *++p2 = %d,  (*p3)++ = %d\n",*p1++,*++p2,(*p3)++);
        printf("*p1 = %d,  *p2 = %d,  *p3 = %d\n",*p1,*p2,*p3);
        
        return 0;
    }
    
    输出结果如下:
    *p1 = 100,  *p2 = 100,  *p3 = 300
    *p1++ = 100,  *++p2 = 200,  (*p3)++ = 300
    *p1 = 200,  *p2 = 200,  *p3 = 301
    

    注:在数组中,指针自增1代表指针指向下一个元素

推荐阅读