學習C語言第三天

2021-09-24 21:35:17 字數 4168 閱讀 4597

函式的劃分

佔位符判斷結構要求指定乙個或多個要評估或測試的條件,以及條件為真時要執行的語句(必需的)和條件為假時要執行的語句(可選的)。

c 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。

判斷語句有if語句;if…else語句;巢狀if語句;switch語句;巢狀switch語句。

最方便判斷輸入的整數是奇數還是偶數:

(num%2==0)?printf(「偶數」):printf(「奇數」);

switch與if的區別

首先說的是switch的用法:先計算switch()中表示式的值,再逐個跟case後常量表示式進行比較,若等於某乙個常量表示式,則從這個表示式後的語句開始執行,如果沒有break語句,就繼續執行後面所有case後的語句;若一直不等,則執行default後的語句。

與if語句的不同:if語句中若判斷為真則只執行這個判斷後的語句,執行完後就跳出if語句,不會執行其他if語句;

而switch語句不會再執行判斷位真後跳出迴圈,而是繼續執行後面所有的case語句。

迴圈型別

c語言提供的迴圈型別有:while迴圈,for迴圈,do…while 迴圈,巢狀迴圈。

迴圈控制語句

迴圈控制語句可以改變**得執行順序,可以實現**得跳轉。

迴圈控制語句有break語句,continue語句,goto語句。

break語句會跳出本輪迴圈,執行下乙個迴圈。

continue語句,會跳過本次迴圈,接著執行本輪迴圈。

goto語句,將控制轉移到被標記的語句。

extern

extern 儲存類用於提供乙個全域性變數的引用,全域性變數對所有的程式檔案都是可見的(概述性理論)。當使用 extern 時,對於無法初始化的變數,會把變數名指向乙個之前定義過的儲存位置

當有多個檔案且定義了乙個可以在其他檔案中使用的全域性變數或函式時,可以在其他檔案中使用 extern 來得到已定義的變數或函式的引用。可以這麼理解,extern 是用來在另乙個檔案中宣告乙個全域性變數或函式

extern 修飾符通常用於當有兩個或多個檔案共享相同的全域性變數或函式。

c函式函式是一組一起執行乙個任務的語句。每個c程式都至少有有乙個函式,即主函式main(),其他函式的程式都可以定義其他額外的函式。

在邏輯上,劃分通常是根據每個函式執行乙個特定的任務來進行的。

函式宣告告訴編譯器函式的名稱、返回型別和引數。函式定義提供了函式的實際主題。

c標準庫提供了大量的程式可以呼叫的內建函式。

定義函式

函式宣告

函式宣告會告訴編譯器函式名稱及如何呼叫函式。函式的實際主體可以單獨定義。

函式宣告包括以下幾個部分:

返回的型別 函式的名字(引數列表 變數型別 變數)

在函式宣告中,引數的名稱並不重要,只有引數的型別是必需的,如int main(int,int);

當在乙個原始檔中定義函式且在另乙個檔案中呼叫函式時,函式宣告是必需的。在這種情況下,在呼叫函式的檔案頂部宣告函式。

呼叫函式

建立c函式,定義函式做什麼,然後通過呼叫函式來完成已定義的任務。

當程式呼叫函式時,程式控制權會轉移給被呼叫的函式,被呼叫的函式執行已定義的任務,當函式的返回語句被執行時,或到達函式的結束括號時,會把程式控制權還給主程式。俗稱函式的跳轉。

由於程式是從上向下執行,一般文件中函式要先宣告,後呼叫。

呼叫函式時,傳遞所需引數,如果函式返回乙個,則可以儲存返回值。

函式引數

如果函式要使用引數,則必須宣告接受數值的變數。這些變數稱為函式的形式引數。

形式引數就像函式內的其他區域性變數,在進入函式時被建立,退出函式時被銷毀。

當呼叫函式時,有兩種向函式傳遞引數的方式:傳值呼叫,引用呼叫。

傳值呼叫:該方法把引數的實際值複製給函式的形式引數。在這種情況下,修改函式內的形式引數不會影響實際引數。這意味著函式內的**不會改變用於呼叫函式的實際引數。

引用呼叫:通過指標傳遞方式,形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作。

傳遞指標可以讓多個函式訪問指標所引用的物件,而不用把物件宣告為全域性可訪問。//相當設為變數供使用者呼叫

函式的劃分

根據函式能否被其他原始檔呼叫,將函式分為內部函式和外部函式。

內部函式

如果乙個函式只能被本檔案中其他函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。

形式 static 型別名 函式名(形參表)

內部函式又稱靜態函式。使用內部函式,可以使函式的作用域只侷限於所在檔案。即使在不同的檔案中有同名的內部函式,也互不干擾。提高了程式的可靠性。

外部函式

如果在定義函式時,在函式的首部的最左端加關鍵字extern,則此函式時外部函式,可供其它檔案呼叫。

如函式首部可以為

extern int min(int a,int b)

c語言規定,如果在定義函式時省略extern,則預設為外部函式。

在需要呼叫此函式的其他檔案中,需要對此函式作宣告(即使在本檔案中呼叫乙個函式,也要用函式原型來宣告)。在對此函式作宣告時,要加關鍵字extern,表示該函式是在其他檔案中定義的外部函式。

內聯函式

內聯函式時指用inline關鍵字修飾的函式。在類內定義的函式被預設成為內聯函式。內聯函式從源**層看,有函式的結構,而在編譯後,卻不具備函式的性質。

內聯擴充套件是用來消除函式呼叫時的事件開銷,它通常用於頻繁執行的函式,對於小記憶體空間的函式非常受益。

1.使用內聯函式的時候要注意:

2.遞迴函式不能定義為內聯函式

3.內聯函式一般適合於不存在while和switch等複雜的結構且只有1~5條語句的小函式上,否則編譯系統將該函式視為普通函式。

4.內聯函式只能先定義後使用,否則編譯系統也會把它認為是普通函式。

5,。對內聯函式不能進行異常的介面宣告。

函式的劃分

main函式其實與手寫的函式區別不大,它有自己的引數。

argc和ar**是main函式的形式引數。

這兩個形式引數的型別是系統規定的。如果main函式要帶引數。就是這兩個型別的引數;否則main函式就沒有引數。

變數名稱argc和ar**是常規的名稱,當然也可以換成其他名稱。在傳入引數後main函式收到引數後就會,接著函式體繼續執行。c程式在編譯和連線後,都生成乙個exe檔案,執行該exe檔案時,可以直接執行。

1.可執行檔名稱和所有引數的個數之和傳遞給argc;2.可執行檔名稱(包括路徑名稱)作為乙個字串,首位址被賦值給ar**[0],引數1頁作為乙個字串,首位址被賦給ar**[1],…以此類推。

函式宣告和函式原型的引數名可以不一樣,編譯器只想知道的函式引數的型別,與函式引數的名字沒有關係。編譯器只要檢查到函式返回型別,名稱和引數型別正確即可。

函式實現了**的重用,大大簡化縮短了程式設計師的工作量,更使得程式的可讀性大大提高,函式的遞迴呼叫更是一種簡化程式**的方法;遞迴呼叫其實是函式自己呼叫自己。

遞迴**少,但是遞迴也有缺點,遞迴占用的記憶體要比遞推大,而且時間也要比遞推長。

佔位符佔位符就是先佔住乙個固定的位置,等著再往裡面新增內容的符號,廣泛用於計算機中各類文件的編輯。

格式佔位符(%)是在c/c++語言中格式輸入函式,如scanf、printf等函式中使用。其意義就是起到格式佔位的意思。表示在該位置有輸入或者輸出。

%d,%i 代表十進位制的整數

%f 單精度浮點浮點

%lf 雙精度浮點

%s 字串(配用指標),讀入乙個字串,遇空格、製表符或換行符結束。

%c char

%p 讀入乙個指標

%fl 長long

%e 科學計數

%g 小數或科學計數

%a,%a 讀入乙個浮點值(僅c99有效)

%c讀入乙個字元

%o 讀入八進位制整數

%x,%x 讀入十六進製制整數

%u 讀入乙個無符號十進位制整數

%f,%f,%e,%e,%g,%g用來輸入實數,可以用小數形式或指數形式輸入。

%n至此已讀入值的等價字元數

%掃瞄字元集合

%%讀取%符號

學習C語言的第三天

二進位制,十進位制轉換 小數部分十進位制轉成二進位制要用乘法,乘2取整 0.625 2 1.25 取整1 0.25 2 0.5 取整0 0.5 2 1 取整1 0.625 10 0.101 2 0.25 10 0.01 2 0.5 10 0.1 2 sizeof是個單目運算子,不是乙個函式,用來計算...

C 學習第三天

一些基礎就可以略過了,看書不能太呆板。如果把一本書看完了,剩下的就是在實際專案中進行整合,訓練,然後整理成筆記。每天敲點程式,記點筆記。變數作用域 include include include std string s1 hello 全域性int main 結果 hello world 42 wo...

第三天 c 學習

1 void my function const a 常引用 目的是為了使得實參不可以被修改 2 函式過載 函式引數預定義值會產生二義性 3 public 類的內外部都可以被訪問 porivate 只能在類的內部被訪問 protected 用在類的內部 繼承 4 析構 先建立的物件後析構,遵循堆疊原...