int main(void)
{
int a[] = {6, 7, 8, 9, 10};
int *p = a;
*(p++) += 123;
/* 其实没必要把p++扩起来,*和++在同一优先级,从右到左的结合顺序 */
printf("%d, %d\n", *p, *(++p));
return 0;
}
*(p++) += 123; 这句先把p和*结合之后,p的值再++,注意p++并不是单纯的把地址的值加1,而是加一个int型占用的内存空间,
执行后a[0]=123+6;p指向a[1],再看这句printf("%d, %d\n", *p, *(++p));
编译器是从右到左扫描,先做*(++p),即a[2],此时p指向a[2],*p就是a[2]的值了