指针问题(*puchMsg++等价于*(puchMsg++))

    xiaoxiao2021-03-26  42

    /*测试*/ {   u8 buff[10] = {0}; u8 *puchMsg = buff; u8 *p2 = buff; u8 *p3 = buff; u8 i=0; u8 k,m,n,x; for(i=0;i<sizeof(buff);i++) { buff[i] = i*2; printf("buf[%d]=%d\r\n",i,buff[i]); } i=sizeof(buff); while(i--) { m = *puchMsg; k= *puchMsg++; x=*(p3++); n=(*p2)++; // printf("k=%d,m=%d ,n=%d,x=%d\r\n",k,m,n,x); } for(i=0;i<sizeof(buff);i++) { printf("buf222[%d]=%d\r\n",i,buff[i]); } }   总结:

     1.*puchMsg++  等价于    *(puchMsg++),因为是后++,故++操作最后。

    前缀++  和 后缀 ++ 的相同点与不同点:

    1.相同点:所执行++操作的变量的值都将是增加1;

    2.不同点:当++运算符 和 变量最为复杂表达式的一部分时。 (所在环境很重要)

                    前缀++,是变量自身先++,然后将变量返回给复杂运算;

                    后缀++,是先返回变量原有值,然后变量自身再++。

    转载请注明原文地址: https://ju.6miu.com/read-662851.html

    最新回复(0)