1. 程式人生 > >C++ 複雜宣告理解

C++ 複雜宣告理解

理解複雜宣告可用的“右左法則”:從變數名看起,先往右,再往左,碰到一個圓括號就調轉閱讀的方向;括號內分析完就跳出括號,還是按先右後左的順序,如此迴圈,直到整個宣告分析完。舉例:

int (*func)(int *p);

首先找到變數名func,外面有一對圓括號,而且左邊是一個*號,這說明func是一個指標;然後跳出這個圓括號,先看右邊,又遇到圓括號,這說明(*func)是一個函式,所以func是一個指向這類函式的指標,即函式指標,這類函式具有int*型別的形參,返回值型別是int。

int (*func[5])(int *);

func右邊是一個[]運算子,說明func是具有5個元素的陣列;func的左邊有一個*,說明func的元素是指標(注意這裡的*不是修飾func,而是修飾func[5]的,原因是[]運算子優先順序比*高,func先跟[]結合)。跳出這個括號,看右邊,又遇到圓括號,說明func陣列的元素是函式型別的指標,它指向的函式具有int*型別的形參,返回值型別為int。