第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,for或switch語句,並在該語句後繼續執行
⒋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 使用普通引用會極大地限制函式所能接受的實參...