void f ( int *p) { *p=5; } int main (void) { int a ,*p; a=10; p=&a; f(p); printf("%d",(*p)++); return 0; } 为什么(*p)++结果是5,而*p=*p+1结果是6
printf("%d",(*p)++);
先输出*p的值,再对(*p)进行自加变成6。
你后面再输出printf("%d",*p);你看结果就是6了
(*p)++是先用*p的值进行处理,处理结束后,再将*p的值加1.所以printf打印时输出5,打印完成后,*p的值增加1
*p = *p+1则先将*p的值加1了。
处理的顺序不同
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
试试++(*p)