小白如何快速入門C語言高級指針?

一、在指針中,還有指針數組、數組指針、函數指針、函數指針數組、函數指針的數組的指針這樣一些高級指針,所以我們需要了解並掌握它們的含義和用法:

我們得先知道, 指針是和數組無關的:

1.指針是一種類型;數組也是一種類型;

2.指針可作左值,數組名卻不可以;

小白如何快速入門C語言高級指針?

(1)int *(*p)[10]://p是一個指針(p指向一個數組(該數組的元素類型是int*))

(2)int **(*p[6])()://p是一個數組(該數組的元素類型是int*的指針(該指針是一個指向形參為void返回值為int**的函數指針))

(3)int *(*p())()://p是一個函數(該函數形參為void,返回值是int*類型的指針(該指針又是一個指向形參為void,返回值為int*類型的函數指針))

(4)int (**(*p)())(): //p是一個指針(p指針指向形參為void,返回值為int**的二級指針(該二級指針是形參為void,返回值為int類型的函數指針))

(5)int (*(*p)())[6]://p是一個函數指針(p指向形參是void,返回值是int*類型的指針(該返回的指針指向一個數組(數組元素是int類型)))

(6)char* (*p[3])(char* p)://p是一個數組(數組元素為char*類型的指針(該指針指向形參為char*,返回值為char*類型的函數))

(7)int *(*(*(*p)())[6])(): //p是一個函數指針(p函數指針指向形參是void,返回值是int*的指針(該返回的指針指向一個數組(數組類型為int*指針(int*指針又指向形參為void,返回值為int*的函數))))

小白如何快速入門C語言高級指針?

高級(複雜)類型轉換符

如何獲得某個類型的類型轉換符?

②然後把聲明中變量名和聲明末尾的分號去掉;

③最後將剩餘的部分用一個括號整個“封裝”起來即可。

例:

float (*p)();//聲明p是一個指向形參為void返回值為float的函數指針

(float (*)()) //表示一個“指向形參為void返回值為float的函數指針”的類型轉換符

小白如何快速入門C語言高級指針?

結束語

好了,今天的知識就分享到這裡,歡迎關注“懷念感覺12”,私信關鍵詞:學習資料,獲取更多學習資源,如果文章對你有有幫助,請收藏關注,在今後與你分享更多學習c/c++的文章。同時歡迎在下面評論區留言如何學習c/c++。


分享到:


相關文章: