下面的識別符號你肯定在工程中看不到,但是在面試題中卻非常常見,掌握掌握還是不錯的。
int (*p1)(int*, int (*f)(int*));int (*p2[5])(int*);
int (*(*p3)[5])(int*);
int*(*(*p4)(int*))(int*);
int (*(*p5)(int*))[5];
嵌入式軟體公司對指標的考察非常強,需要深刻的理解。
右左法則 (實在看不懂看這個)
-從最裡層的圓括號中未定義的標示符看起
-首先往右看,再往左看
- 遇到圓括號或方括號時可以確定部分型別,並調轉方向
-重複2, 3步驟,直到閱讀結束
int (*p1)(int*, int (*f)(int*));==> p1為指標,指向函式,指向的函式有int*,f為第二個引數,
f是乙個函式指標,指向的函式引數是int*,返回值為int;;;返回值為int
int (*p2[5])(int*);
==> p2為陣列,有5個元素,這5個元素為指標,指向函式,函式型別為int (int*)
int (*(*p3)[5])(int*);
==> p3為指標,陣列指標,指向陣列有五個元素,5個元素為指標,
是函式指標,指向的函式型別int(int*)
int* (*(*p4)(int*))(int*);
==> p4為指標,函式指標,引數為int*,返回值為指標,是函式指標,
指向的函式型別int*(int*)
int (*(*p5)(int*))[5];
==> p5為指標,函式指標,引數為int*,返回值為指標,指向陣列,,
指向的陣列型別為int[5]
typedef int(arraytype)[5];typedef arraytype* (funtype)(int*);
funtype* p5;
3、小結
右左法則總結於編譯器對指標變數的解析過程
指標閱讀練習的意義在於理解指標的組合定義
可通過typedef簡化複雜指標的定義
提公升架構能力
摘自 easy dry是don t repeat yourself的縮寫,翻譯過來就是 不做重複事 這正是 個逼近軟體本質的原則,它指導我們把經常使 的功能抽象成庫,把重複出現的 重構為可重 的框架模組。如果你 dry來要求 很快你就會發現 抽象和架構能 的飆公升。半自動化 但是我們活在現實世界,所...
教你閱讀MSDN英文文件,迅速提公升程式設計能力
在教大家閱讀英文文件之前,首先給大家明確乙個概念。c 和.net的區別?有一定程式設計經驗的同學應該多多少少知道這方面的概念,但是可能模糊,理解的不一定深刻。我在這裡簡單給出兩者的基本定義 c 僅僅就是一種程式語言,有它自己的語法和結構。net 是乙個執行環境,裡面包含了很多的庫。重點 我們使用c ...
搜尋能力提公升計畫
值得反思的乙個問題 自己從第一次接觸電腦開始,自己的搜尋能力是否得到過刻意練習?還是說一直以來都是憑藉直覺在進行搜尋?接觸電腦不下十年,但真的會用電腦嗎?真的會搜尋嗎?如今時代我們已經有了如此強大的資訊工具,自己需要什麼資訊 需要什麼書籍都可以在很短的時間內獲取,但我們卻仍然這麼愚笨 膚淺,仍沒有更...