讀書筆記 指標與宣告

2021-04-12 19:29:16 字數 693 閱讀 2370

先看乙個例子:

char *const *(*next)()

首先理解c語言的優先順序規則

a.宣告從它的名字開始讀,然後按照優先順序順序依次讀

b.優先順序從高階高到低依次是

b1.宣告中被括號括起來的那部分

b2.字尾操作符:

括號() 表示乙個函式

方括號  表示乙個陣列

b3.字首操作符:

星號* 表示指向...的指標

c.如果const關鍵字的後面緊跟型別說明符(如int,long等).那麼它作用於型別說明符,在其他情況下,const作用與它左邊緊鄰的指標星號.

現在來解決例子的宣告:

a.首先,看變數名"next".並注意到它被括號括住

b1.先把括號裡的作為乙個整體,得出"next是乙個指向...的指標"

b2.優先順序較高的是右邊的函式括號,得出"next是乙個函式指標,指向乙個返回...的函式"

b3.處理"*",得出指標所指的內容.

c.最後把"char *const"解釋為指向字元常量的指標

這個宣告表示為"next是乙個指標,指向乙個函式,該函式返回另乙個指標,該指標指向乙個型別為乙個為char的常量指標".

char *(*c[10])(int **p);

這個則應理解為:c是乙個陣列[0...9],該陣列的元素型別為函式指標,該函式返回char型別的指標 

《Effective C 》讀書筆記 設計與宣告

在c 介面設計中,乙個基本的原則是 讓介面容易被正確使用,不容易被誤用。接下來的所有討論都基於這一基本原則。寧以引用方式 pass by reference to const 替換傳值方式 pass by value 當使用傳值方式時,實際上傳遞的是物件的乙個副本,這樣會呼叫其建構函式和析構函式,增...

c與指標 讀書筆記 03

邊界對齊 boundary alignment 在要求邊界對齊的機器上,整形值儲存的起始位置只能是某些特定的位元組,通常是2與4的倍數.硬體通過位址訪問記憶體位置 不能簡單的通過檢查乙個值的位來判斷它的型別 當兩個指標都指向同乙個陣列裡的元素時,才允許乙個指標減去另乙個指標,結果為兩個指標在記憶體中...

《C primer 讀書筆記》 指標

指標持有另乙個物件的位址,使我們能夠間接地操作這個物件 指標的型別可以指示編譯器怎樣解釋特定位址上記憶體的內容,以及該記憶體區域應該跨越多少記憶體單元。在逗號分隔的識別符號列表中,每個將被用作指標的識別符號前都必須加上解引用操作符 lp 是乙個指向 long型別物件的指標,lp2則是乙個 long ...