1. 程式人生 > >徹底明白p++,*(p++)等 經典例子:char str []="Orange or Apple?";讓你徹底明白p++,*(p++)等

徹底明白p++,*(p++)等 經典例子:char str []="Orange or Apple?";讓你徹底明白p++,*(p++)等

總體來說,對於char型別 的指標是 比較特別的:

p++就是指標的移位,cout<<*p:就是取出指標當前值得元素cout<<p:就是這個指標指向的全部字元;

例子:

#include <iostream> using namespace std; int main() {

    char str []="Orange or Apple?";     char *p=str;          cout<<p<<endl;//輸出全部str     cout <<p++<<endl;//指標you移位一下     cout<<*p<<endl;    //輸出指標指向的元素     cout<<p<<endl;//輸出指標後面的元素     return 0; }

結果:

Orange or Apple?
Orange or Apple?
r
range or Apple?

#include <iostream> using namespace std; class CExcept{}; class CExceptApple:public CExcept{}; class CExceptOrange:public CExcept{}; int main() {     try{     char str []="Orange or Apple?";     char newStr[10];     char *p=str;     for(;p-str<=6;p++)         newStr[p-str]=*p;     newStr[p-str]=0;          cout<<newStr<<endl;         switch(*(p-1)){             case 'm':                 throw CExceptApple();             case 't':                 throw CExceptOrange();             default:                 throw CExcept();           }

             }catch(CExceptApple){cout<<"Apple";}     catch(CExceptOrange){cout<<"Orange";}     catch(CExcept){cout<<"UnKnow";}     return 0; }

結果:

Orange 
UnKnow

補充: 

int arr[5] = { 1,3,5,7,9 };

int *p = arr;

*++p:p先自+,然後*p,最終為3

++*p:先*p,即arr[0]=1,然後再++,最終為2

*p++:值為arr[0],即1,該語句執行完畢後,p指向arr[1]

(*p)++:先*p,即arr[0]=1,然後1++,該語句執行完畢後arr[0] =2

*(p++):效果等同於*p++

再來一個例子:

這個char是一個字串形式的。

#include <iostream> using namespace std; int main() {

    char str []="Orange or Apple?";     char newSte[10];     char *p=str;     cout<<*p<<endl;     cout<<p<<endl;     cout <<*p++<<endl;     cout <<*p<<endl;     cout <<p++<<endl;

    cout <<*p<<endl;

    return 0; }