指針常量、常量指針;指針數組、數組指針;指針函數、函數指針
面試中經常被問到一些C++的基礎概念,這些概念很基礎,但是時間長了就會搞混,這裡對其做一個總結。
以上六個名詞,主體均是最後的定語
什麼意思呢,就是說這些名詞都隻要看最後那兩個字就可以了。以下進行舉例:
- 指針常量:本質是一個常量, 表示指針所指的對象值不能變,指針可以改變。聲明為const int *ptr = &pi.
- 常量指針:本質是一個指針,表示指針本身(位址)不能改變,但是值可以改變。聲明為int *const ptr = &pi.
- 指針數組:本質是一個數組,數組的元素是指針。聲明為int *ptr[].
- 數組指針:本質是一個指針,指向數組。聲明為int(*ptr)[].
- float (**def)[10],def是一個二級指針,指向的是一個一維數組的指針,數組元素都是float。
- double*(*gh)[10],gh是一個指針,指向一個一維數組,元素都是double*。
- 指針函數:本質是一個函數,函數傳回值是指針。聲明為bool *pf(const string &, const string &).
- 函數指針:本質是一個指針,指向函數。聲明為bool (*pf) (const string &, const string &).
-
double (*f[10]) (),從内向外,f是一個數組,元素都是函數指針,
指向的函數類型沒有參數并且傳回值為double。
-
int (*(*F)(int, int)) (int),從内向外,F是一個函數指針,指向的函數類型有兩個int參數,
并且傳回一個函數指針的函數,
傳回的函數指針指向一個int參數且傳回int的函數。
-