C語言型別的分析

2021-10-18 23:21:26 字數 753 閱讀 4851

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被當做一種資料型...