讀書筆記《征服C指標》----C的聲明是這樣解讀的

來源:互聯網
上載者:User

標籤:style   color   io   使用   資料   sp   問題   on   cti   

      解讀C的聲明的最好方法是用英語來閱讀,道理很簡單,因為C語言是美國人發明的。

為了把問題變得更簡單,在這裡暫不考慮const和volatile。接下來遵循以下步驟來解釋C的聲明。

  1. 首先著眼於標識符(變數名或者函數名)。
  2. 從距離標識符最近的地方開始,依照優先順序解釋衍生類別型(指標、數組、和函數)。優先順序說明如下:
    • 用於整理聲明內容的括弧。
    • 用於表示數組的[],用於表示函數的()。
    • 用於表示指標的*。
  3. 解釋完成完成衍生類別型,使用“of”、“to”、“returning”將它們串連起來。
  4. 最後,追加資料類型修飾符(在左邊,int,double等)。
  5. 英語不好的人,可以倒序用中文解釋。

數組元素個數和函數的參數屬於類型的一部分。應該將它們作為附屬類型的屬性進行解釋。

比如:int (* func_p)(double);

     1.首先著眼於標識符。  int (* func_p)(double);   英語的表達為 func_p is 

     2.因為存在括弧,這裡著眼於*。 int (* func_p)(double);  英語的表達為func_p is pointer to

     3.解釋用於函數的(),參數是double。int (* func_p)(double);  

       英語的表達為:func_p is pointer to function(double) returnning

     4.最後解釋資料類型修飾符int。int (* func_p)(double);

        英語的表達為:func_p is pointer to function(double) returnning int。

     5.最後翻譯成中文:func_p是指向返回int的函數的指標。

根據這樣的步驟,可以解釋任何一個聲明,比如更為複雜的:int atexit(void (*func)(void));
英語的表達為:atexit is function (func is pointer to function(void) returnning to void) returnning int.

翻譯成中文為:atexit 是返回int的函數的(參數是,指向返回void沒有參數的函數指標)

讀書筆記《征服C指標》----C的聲明是這樣解讀的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.