* 和 ++ 的优先级相同,而且都是右结合,所以输出 *p++ 和输出 *(q++) 是一样的(p、q 都指向了a).至于下面那句,记住,实参传递参数给形参的时候是按从右至左的顺序传递的,这里也是一样即先执行 (*q)++ 再执行 *p 。而(*q)++ 执行完之后a 的值已经变成3了
应该全是2才对。。++优先级比 * 高 所以*(q++)与*q++无区别++在后面 所以 是先输出值2然后地址++了所以只有你最后一个 (*q)++); 才把值2++变成了3你在最后再加上一句printf("%d",*p); 这句输出是3了
为什么我编译的结果是2 2 2 2
变量才能++,常量不能++
楼上是对的.