辨析*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

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