C Primer 讀書筆記 第六章

2021-09-30 07:17:55 字數 2671 閱讀 2556

第6章 語句

㈠ 簡單語句

⒈ 表示式語句(expression_r statement)

乙個表示式加上結尾的分號,執行時導致該表示式被求值

⒉ 空語句(null statement)

只由乙個單獨的分號組成,當語法上需要乙個語句但邏輯上並不需要時使用

⒊ 宣告語句

用於宣告或定義物件或類

㈡ 復合語句

⒈ 復合語句(compound statement)又被稱為塊(block),是用一對花括號{}括起的(可能為空的)語句序列

⒉ 通常用於語法規則要求使用單個語句但程式邏輯需要多個語句時

⒊ 塊標示了乙個作用域,在塊中引入的名字只能在其內部訪問

㈢ 控制流語句

注:作為語句控制結構的一部分定義的變數,僅在該語句內可見

⒈ 條件分支結構

if語句

關於else-if匹配的二義性問題:else匹配給最後出現尚未匹配的if

switch語句

switch在計算表示式的值後跳轉到匹配的標號處(無匹配則跳轉至default),並從該點開始一直執行下去,

直至switch語句結束或遇到break語句

switch求解表示式的結果須為整型,每個case標號的值也須為各不相同的整型常量表示式

switch內部的變數定義

· 可以在switch求解的表示式中定義和初始化變數

· 為防止跳過變數定義,只允許在最後乙個標號後定義變數

· 也可以引入塊語句,在其中定義變數

⒉ 迴圈

while語句

注:迴圈條件中定義的變數在每次迴圈時都要經歷建立和撤銷的過程

for迴圈語句

注:語句頭中的初始化語句、迴圈條件和表示式三者都可以省略

迴圈條件省略表示永遠為 true

dowhile語句

注:不能在迴圈條件中定義變數

break語句

用於結束最近的外圍while,dowhile,forswitch語句,並在該語句後繼續執行

continue語句

導致最近的外圍迴圈語句(for,while,dowhile)正在進行的這次迭代提前結束

goto語句

goto語句提供了函式內部的無條件跳轉,實現從goto語句跳轉到同一函式內某個帶標號的語句

除非有足夠理由,應避免使用goto語句

⑵ 在任何語句前提供乙個識別符號和冒號,就得到乙個帶標號的語句(labeled statement)

識別符號: 語句

使用goto語句跳轉到該語句:goto識別符號;

由於這裡的識別符號只能用作goto的目標,因此可以與其它型別的識別符號(如變數名)同名

goto語句不能跨越變數的定義語句向前跳轉

若確實需在goto和跳轉目標位置間定義變數,則須定義在塊中

try,catch語句和throw表示式

用於異常處理

return語句

用於結束當前函式,返回函式被呼叫處繼續執行

⒍⒕ 使用預處理器進行除錯

⒈ 使用 ndebug 預處理變數實現有條件的除錯**(類似標頭檔案保護符)

#ifndef ndebug

#define ndebug

// 除錯**

#endif

如果定義了 ndebug 就不執行除錯**

⒉ 使用 ndebug 預處理變數以及 assert 預處理巨集

定義在標頭檔案cassert中,常用來檢查不可能發生的狀況,形式為

assert(表示式)

如果表示式結果為 false, assert 輸出資訊並終止程式

如果定義了 ndebug 預處理變數,assert 將被忽略,不會產生任何執行時代價

⒊ 預處理器定義了四種在除錯時有用的常量

__file__ 檔名

__line__ 當前行號

__time__ 編譯時間

__date__ 編譯日期

第六章讀書筆記

linux系統將每個驅動都對映成乙個檔案,這些檔案稱為裝置檔案或驅動檔案,都儲存在 dev目錄中。編寫linux驅動程式的步驟 第1 步 建立linu x 驅動骨架 裝載和解除安裝linu x 驅動 第2 步 註冊和登出裝置檔案 第3 步z 指定與驅動相關的資訊 第4 步 指定 函式 第5 步z 編...

第六章 讀書筆記

第六章主要講的是第乙個linux 驅動程式 統計單詞個數。從這章開始進入了實戰階段,這一章首先介紹了linux 驅動的工作方式,linux 將每乙個驅動都對映成乙個檔案,這些檔案被稱為裝置檔案或驅動檔案,都儲存在 dev 目錄中,使得 linux 驅動互動就像是普通檔案互動一樣。編寫linux 驅動...

c primer 筆記,第六章

區域性靜態物件使用static宣告,宣告一次後下次再呼叫該函式,則該宣告語句則被忽略 練習6.7,第一次被呼叫時返回0,以後每次呼叫返回值加一 size t count 當函式無需修改引用形參的值時最好使用常量引用 使用實參初始化形參時會忽略頂層const 使用普通引用會極大地限制函式所能接受的實參...