指針數組、指針常量、指針函數
指針是C/C++特有的結構類型,也是最難理解的部分,有很多容易混淆的相關術語,rt。指針本身是個數據類型,指向特定數據。我們可以這樣理解:指針對應與一個儀表盤的指針,其指向的地址就是錶盤上數據。
- 指針數組與數組指針
- 指針常量與常量指針
- 指針函數與函數指針
記憶方法有很多,不理解的時候就死記唄,然後用的時候慢慢領悟。上面上個記起來其實很簡單,怎麼唸的通就是怎麼個意思,如下:
指針數組:存放指針的數組,還能讀成別的麼?只有這麼讀這個詞纔有意義。int *p[]
數組指針:指向數組的指針;int (*p)[]
指針常量:這個指針是常量;int * const p
常量指針:指向常量的指針;int const *p
指針函數:返回指針的函數; int* f()
函數指針:指向函數的指針 int (*f)(); f=fun; int fun()
最後一個也是最好理解的,在此不贅述。
指針常量,既然這個指針是常量,那麼指針指向不能更改,但是指針指向的內容可以改變,也就是說,儀表盤上的指針現在鎖死不能擺動了,但是錶盤是可旋轉的了。
常量指針,指向常量的指針,也就是指針所指向的內容是常量,不可變,但是指針可以指向別處。也就是說,儀表盤指針可以轉動,但是錶盤是固定的。
指針數組與數組指針
A)int *p[];指針數組
B)int (*p)[];數組指針
我們可以根據符號優先級來理解,括號優先級高於星號,只看變量p的類型,可知A中p是一個數組,而B中p是一個指針。有了p的類型,剩下的就是類型的功能了,比如,A中p是數組,那這個數組的功能是……存指針,再比如,B中的p是指針,這個指針的功能是……指向數組咯。
怎麼解釋好理解好記憶,並且不失其本身意義,是教育者該考慮的。