typedef個人心得

2021-04-12 19:40:05 字數 1692 閱讀 4360

一直以來對typedef都沒有乙個正確的理解,導致看到稍微複雜一點的typedef語句就很是迷惑。今天在查閱了一些資料並仔細思考了一番後,自我感覺有一些比較深刻的了解了。

主要的幾點感悟:

1、typedef和define

typedef 在編譯時被解釋,define在預處理時被替換。

#define定義「可讀」的常量以及一些巨集語句的任務,而typedef則常用來定義關鍵字、冗長的型別的別名。 

____巨集定義只是簡單的字串代換(原地擴充套件),而typedef則不是原地擴充套件,它的新名字具有一定的封裝性,以致於新命名的識別符號具有更易定義變數的功能。

typedef int size;

#define max 100

2、typedef屬於儲存類宣告說明符

typedef int size 是乙個完整的宣告,不可拆分,不能簡單的看作這個語句的意思是替int起乙個別名為size。

3、typedef編譯時做的事

typedef int size;

size length;

對size length;這條語句來說,在編譯時不是把其中的「size」替換為「int」,真實過程應該是這樣的:

1、length宣告為乙個size型別。

2、typedef語句後面部分中的語句(即int size)相當於乙個一元表示式,其中的size是乙個未知數,現在要用length去代入這個一元表示式得到int length,然後用這個替換得到的一元表示式取代size length。

3、1和2過程重複,直至一元函式中沒有未知數。

3、最終得到int length。

可能從上面這個簡單的語句解釋不足以說清我的理解思路,我們看乙個複雜點的:

typedef int (*pf) (const char *, const char *);

pf register(pf pf);

對pf register(pf pf);這條語句來說,在編譯時它的過程應該是這樣的:

1、register(pf pf)宣告為pf型別。

2、typedef語句後面部分中的語句(即int (*pf) (const char *, const char *))相當於乙個一元表示式,其中的pf是乙個未知數,現在要用register(pf pf)去代入這個一元表示式得到int (*register(pf pf)) (const char *, const char *)),然後用這個替換得到的一元表示式取代pf register(pf pf)。

3、1和2過程重複,直至一元函式中沒有未知數。

4、最終得到int (*register(int (*pf) (const char *, const char *))) (const char *, const char *)。

其中過程3的詳細過程:

pf宣告為pf型別。

typedef語句後面部分中的語句(即int (*pf) (const char *, const char *))相當於乙個一元表示式,其中的pf是乙個未知數,現在要用pf去代入這個一元表示式得到int (*pf) (const char *, const char *)),然後用這個替換得到的一元表示式取代pf pf。

得到int (*register(int (*pf) (const char *, const char *))) (const char *, const char *)。

msn: zhanghuanling at msn.com

寒假集訓個人心得

寒假之初,進行了幾天的集訓,在每天的忙忙碌碌之中,也是有了一些的收穫 1.搜尋的近一步理解,深搜與廣搜只是基礎的兩種實現形式,關鍵還在於對於搜尋的優化,剪枝水平尤為重要。2.dp可看作一種優化到極致的搜尋,在判斷好空間與時間複雜度的情況下,可採取記憶化搜尋,許多能用dp來完成的題目,記憶化搜尋也是可...

Nginx個人心得筆記

目錄 一.nginx簡介 1.nginx能幹什麼 2.nginx特點 二.nginx能做什麼有什麼優勢 二.專案部署 解壓就可以用 nginx是一款輕量級web伺服器,也是一款反向 伺服器 高穩定 高效能 資源占用少 功能豐富 模組化結構 支援熱部署 客戶端假設通過http協議訪問a 中的應用伺服器...

JSONP個人心得筆記

目錄 jsonp個人心得筆記 1.學習jsonp掌握三個問題 2.什麼是jsonp 2.1定義 2.2樣子 3.為什麼使用jsonp 3.1使用jsonp的場景 3.2js的跨域非同源 3.3為什麼使用jsonp 4.jsonp的呼叫原理 5.jquery的封裝 基於json字串格式的一種使用模式,...