標籤:style blog http color com 使用
C的發展曆程
C原本是為了開發UNIX作業系統而設計的語言;如此說,應該C比UNIX更早問世,而事實並非如此,最早的UNIX是由彙編寫的;
C語言本來是美國人開發的,解讀C的聲明,最好還是用英語來讀;
解讀C聲明的步驟:
1、首先著眼於標識符(變數名或者函數名)
2、從距離標識符最近的地方開始,依照優先順序解釋衍生類別型(指標、數組和函數)。優先順序說明如下:
a、用於整理聲明內容的括弧;
b、用於表示數組的[ ],用於表示函數的( )
c、用於表示指標的*
3、解釋完成衍生類別型,使用 “of”、 “to”、“returning”將它們連結起來;
4、最後,追加資料類型修飾符(在左邊, int、double等)
int (*func_p)(double);
1、著眼於標識符。即:func_p /*/ func_p is
2、因為存在括弧,著眼於括弧*: /*/func_p is pointer to
3、著眼於用於整理聲明內容的括弧: /*/func_p is pointer to function(參數是double) returning
4、最後、解釋資料類型修飾符int : /*/ func_p is pointer to function (參數是double) returning int
翻譯成中文:func_p 是指向傳回值為int 的函數的指標;
C語言的聲明不能從左往右按順序解讀;而是左右來回地解讀;
int (*func_table[10])(int a);
func_table is array(元素個數為10) of pointer to function(參數int類型) returning int
對指標進行加法運算,指標只前進 指標所指向類型的大小的距離,這一點具有非常重要的意義;
“指向數組的指標”,
錯誤理解:數組名後不加[ ] ,不就是“指向數組的指標”嗎?
的確,在運算式中,數組可以被解讀成指標,但是, 這不是“指向數組的指標”, 而是“指向數組初始元素的指標”
(之後就是涉及一個+1指標的跨度問題,很經典的問題)