C++指針_1

回想一下學過的指針,感覺掌握得不紮實,現在簡練地靠記憶回顧一下。

1. 聲明指針。type * variable,例如int *p;還有,就是一個數組,一個array,那麼他的名稱就是一個指針,例如char a[3],那麼a就是一個指針,它指向這個array的第一個元素,char *p=a;這是正確的。

2. 一些符號的表示意義。‘&’表示取地址,int a;int *p=&a;;‘*’表示指針指向的地址裏的東西,例如讓前面的a=2,那麼輸出(*p)時,輸出的是2,當輸出(p)時,輸出的是p的值,即a的地址。注意聲明一個指針的時候用到的int *p中的‘*’只是一種聲明指針的形式。

3. 函數指針的聲明。例如void *Pfun(int x);他可以和void showNum(int x){std::cout<<x;}配合使用,用法是 Pfun=showNum;再舉一個栗子:int Add(int x,int y){return a+b;}  在main(){}中:int *Pfun(int a,int b); Pfun=Add;cout<<Pfun(2,4);那麼結果是輸出6。

4. 指針的運算,主要是加減運算(至今沒見過兩個指針相乘)。這裏需要注意的是,指針的加減是目標的移動,就是說現在一個指針所指向這裏,那麼+1後,目標轉向了下一個,至於是下一個什麼,我的理解是下一個模塊(詳看下)。

5. (總是打算先把別的說了,再說這一部分的,在腦子裏憋了好久還是忍不住說出來吧)指針在數組的應用!int a[5];則a就是一個指針,指向這個數組的第一個元素,即a[0],a+1就是指向下一個元素,即a[1]。大招來了~~~~int a[2][3];大家都知道這是聲明瞭一個兩行三列的二維數組,那麼,這個a表示的是這個二維數組的地址,就是說a就是a[0][0]的地址,然後a+1是什麼?他不是下一個數,不是a[0][1],這時候,a+1表示a[1][0]!這就是爲什麼說指針+1是代表下一個模塊了。a+1=a[1],而*(a+1)標識了a[1]這個數組,就是兩行三列裏的第二行,(*(a+1)+2)表示的是一個指針,指向a[1][2]這個數,對其進行訪問,那就是*(*(a+1)+2).

發佈了27 篇原創文章 · 獲贊 13 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章