看了那篇文章,總結一下,解析複雜宣告其實就是從最裡面的未定義識別符號開始,左邊和右邊同時找一對符號來配對,不斷向外擴充套件,最後完成解析。
int (*(*func)[5][6])[7][8];
func是個指標,這個指標指向什麼呢。那我們就可外圍,左邊和右邊找一對符號:* [5][6],這表示乙個二維陣列,陣列元素是指標。所以func指向的就是這個陣列啦。但是這個陣列元素指標指向什麼我們還是不知道的,所以我們再向外找:int [7][8],就是說指標指向的又是乙個二維陣列,陣列元素是int。
int (*(*(*func)(int *))[5])(int *);
func是個指標,指向的是:* (int*),就是乙個函式,形參是int*,返回的是乙個指標,那麼返回的這個指標指向什麼呢?外圍是:* [5],即指向的是乙個陣列,陣列元素是指標,指向的是:int (int*),即指向乙個函式,形參是int*,返回乙個int。
int (*(*func[7][8][9])(int*))[5];
func是個陣列,陣列元素是指標,指向的是:* (int*),即乙個函式,形參是int*,返回乙個指標,指向的是int [5],即指向乙個陣列,陣列元素是int.
複雜宣告解析
c語言的指標很久沒看了,複習一下,做一下總結。c語言的複雜宣告,例如 void f int,int int 怎麼樣,是不是很複雜?看著摸不到頭腦,不知從何說起。看了挺多資料,主要是應用 右左法則 現總結如下 1.基本的c語言宣告 int a 宣告乙個整形數a int a 宣告乙個指標,該指標指向乙個...
C語言複雜宣告
專家程式設計 第三章介紹了如何分析複雜的宣告,講的非常不錯。對於作者介紹的分析複雜宣告的方法,我沒有完全掌握,不過,我有我自己的一套方法來解析複雜的宣告,正所謂條條大道通羅馬,只要結果一樣,必須在乎過程呢。今天在網上找了幾個複雜的宣告,練練手 宣告的例子全部來自網路,原諒出處未詳 記下此文,作個標記...
C語言複雜宣告
問題1 宣告與函式 void 0 讓我們從兩個不同的途徑來詳細分析這個問題。分析 首先,最基本的函式宣告 void function paramlist 最基本的函式呼叫 function paramlist 鑑於問題中的函式沒有引數,函式呼叫可簡化為 function 其次,根據問題描述,可以知道...