首頁>Club>
14
回覆列表
  • 1 # 使用者1844197706474

    關鍵字是“型別定義”的縮寫,是用來定義一個別名的,語法是

    (函式指標的 比較特別,不符合上面的形式)

    比如你有一個“連結串列節點”結構體,其中的元素為 型別,你當然可以這麼寫:

    但是,想一下,現在你寫了一大堆操作連結串列的函式,比如:

    這個時候你可能遇到兩個問題:

    如果你想把元素的型別修改為 ,你該怎麼辦?有幾種辦法:人工修改,這樣工作量會很大增加一條語句: 這樣當然很蠢,所有的 都會被替換為 ,當你真的需要使用 的時候(比如 使用 表示布林值),這種方法顯然是行不通的或者,你可以使用 ,這樣,當你想要修改連結串列節點的元素型別時,只需要修改這條語句即可:

    使用 , 就可以這麼寫:

    另外,連結串列節點是一個很簡短的示例,試想,當你的結構體中有大量的欄位,而且欄位的名字表意又不是太明瞭時, 能讓程式碼更易讀(上面的 與最開始的版本相比,更容易理解)。

    除了上面提到的兩點之外, 還能起到簡化的作用。比如你有一個函式:

    定義一個指向它的函式指標,直接寫會比較麻煩(如果你頻繁地運用函式指標,顯然會更加麻煩):

    使用 :

    以後再使用指向 的函式指標,就可以直接:

    總結一下,使用 能讓你的程式碼更加便於修改、容易理解,並且能夠起到簡化的作用(通常,也會同時使程式碼更容易理解)。

    C 標準庫和 Linux 系統呼叫中就大量使用了 關鍵字,比如儲存檔案資訊的結構體 :

    標準庫的 函式使用結構體 ,它是在 POSIX 標準中定義的。印象裡這個結構體在 Linux 中實際上只有一個 欄位,但是為了跨平臺才使用了這樣一個結構體(粗略看過 的手冊,記憶的可能不是特別準確)。

    還有 Linux 訊號處理的 handler、執行緒庫中初始化執行緒時關聯的函式都是藉助於函式指標實現的。

  • 中秋節和大豐收的關聯?
  • 環太平洋2中萊利為什麼沒出場?