1 宣告中被括號括起來的那部分
2 字尾操作符
括號()表示這是乙個函式
而 表示這是乙個陣列
3 字首操作符 * 表示指向...的指標
char * const *(*next)()
首先看next 注意它直接被括號括住,所以先把括號裡的東西作為乙個整體
得到next是乙個指向…的指標
然後考慮括號外面的東西,在星號和括號字尾之間做出選擇,字尾括號優先
得到next是乙個函式指標,指向返回…的函式
然後處理* 得代指標所指向的內容,最後把char * const 解釋為指向字元的常量指標
next是乙個函式指標,該函式返回的是另乙個指標 ,該指標指向乙個型別為char的常量指標
char *(*c[10])( int ** p)
首先看c,注意到被括號括住,先看括號裡內容
在和星號之間做出選擇,優先順序較高
則c是乙個陣列,陣列元素個數是10
然後注意前面的星號
則說明陣列元素型別是指向…的指標
接下來看
char * ()(int**p)
在星號和字尾括號之間做出選擇
可知道陣列元素的指標型別是乙個函式指標,函式的引數是乙個二級指標,返回值型別是指向字元型別的指標
即:c是乙個[0…9]的陣列,陣列元素型別是乙個指向函式的指標
函式的引數是乙個指向整數的指標的指標
函式的返回值型別是乙個指向字元的指標
對於C語言複雜指標型別的分析
自 int p p是乙個普通的整型變數。int p 1 p與 結合,說明p是乙個指標。2 p與int結合,說明指標所指向的內容的型別是整型的。所以p是乙個返回整型資料的指標。int p 5 1 p與結合,說明p是乙個陣列。2 p 5 與int結合,說明陣列裡的元素是整型的。所以p是乙個由整型資料組成...
C語言的分析
運算子描述例項 把兩個運算元相加 a b 將得到 30 從第乙個運算元中減去第二個運算元 a b 將得到 10 把兩個運算元相乘 a b 將得到 200 分子除以分母 b a 將得到 2 取模運算子,整除後的餘數 b a 將得到 0 自增運算子,整數值增加 1 a 將得到 11 自減運算子,整數值減...
C語言列舉型別的語法分析和型別系統實現
本節,我們看看對於列舉型別,c語言編譯器是如何解析的。我們使用下面的例項去實現語法解析和型別系統的建立 enum tag x 上面的列舉定義會被c編譯器轉義成下面的形式 enum tag int x int a 0 int b 1 int c 5 int d 6 上面的 中,enum被當做一種資料型...