辨析*p++、(*p)++、*(p++) ......

int a[3]={1,2,3};
int *p = a;

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

 cout << *p++; // 结果为 1

 cout <<(*p++); // 1

(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)
 cout << (*p)++; // 1
 cout <<((*p)++) //2
综上所述:
*p++是先取出*p的值,然后让p++
*(P++)是先取出*p的值,让p++
所以,*p++等价于*(P++)

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

 cout << *++p; // 2
 cout <<(*++p) //2

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章