C 二級複習1

2021-09-13 13:58:41 字數 3644 閱讀 9827

以下編輯於2019-03-24

1、字串常量,系統會在末尾自動新增乙個\0作為結束標誌;字元陣列,在末尾可以不新增\0,若新增,會改變陣列的實際長度。

a=

strlen("abcd") > strlen(a)

2、求餘數,需要兩個皆是整型

3、float型別運算時,按照double處理

4、強制型別轉換

(型別)(變數) 或  型別(變數)
5、逗號運算子

表示式1,表示式2,...,表示式n
依次求解每個表示式,整體的值為最後乙個表示式的值

6、標準輸入輸出流的格式控制符,以後了解*(考試要考估計)

7、c++保留了c語言的 getchar() putchar() scanf() printf()

8、c+新的標頭檔案

#include 引入數學庫
9、布林變數

bool 型別 常量值只有 true 和 false

true 和非零值 均處理為1,false處理為0

10、邏輯變數

!(非)> &&(與)> ||(或)

11、條件運算子

表示式1 ? 表示式2 : 表示式3
先求解表示式1的值,為真,整個表示式的值等於表示式2的值,否則,等於表示式3的值

12、switch語句

switch()

13、函式的巢狀呼叫是不被允許的,即在乙個函式內,完整的包含另乙個函式。

(python好像可以,高階函式裡的返回函式或者匿名函式)

14、內建函式

適用於,規模小呼叫次數頻繁的函式

在 函式 宣告和定義函式體的時候,在前面加上 inline 即可,可以提高程式執行的效率。

此外,會增加主函式的**長度,以及對於 含有迴圈,遞迴結構,switch語句以及很長的**,指定為inline後,系統並不會照樣執行。

15、過載函式,函式名多用

利用 相同的乙個函式名,修改函式的型別,引數的型別,個數,順序(函式體)

已達到 「一名多用的目的」,簡單的說,就是免得寫函式體,只要簡單改改型別和引數就行了。

16、函式模板,這個感覺還是挺有用的

建立乙個通用函式,型別和引數型別不具體制定,用乙個虛擬的型別進行替代。

定義在主函式之前

template或 templatet max(t a,t,b)

使用時,直接呼叫函式名即可

同樣可以定義,多個型別引數

template
當然,這個模板只限於,對函式的引數個數,函式體相同,而型別不同的情況。

17、帶有預設引數的函式

一般最好只在函式的宣告裡,指定預設值

乙個函式不能同時做,過載函式和有預設引數的函式(少乙個引數時會產生二義性)

以下編輯於2019-03-25

18、同乙個原始檔中,全域性變數和區域性變數同名,區域性變數的作用範圍內,全域性變數將被遮蔽。

19、變數的屬性–儲存期

分為靜態儲存期和動態儲存期,對應靜態儲存區(全域性變數)和動態儲存區(函式的形參,函式中定義的變數,函式呼叫時的現場保護和返回位址),

變數除了資料型別的屬性外,還有儲存類別,即資料在記憶體中的儲存方法,即剛剛提及的兩種,類別有4種,自動的(auto),靜態的(static),暫存器的(register),外部的(extern)

自動變數,函式中的區域性變數,不用static加以宣告,編譯系統對其動態分配儲存空間。一般用auto作宣告,可以省略。

靜態區域性變數(static)

區域性變數的值在函式呼叫結束後,儲存單元不釋放,在下一次呼叫函式時,變數保留上一次呼叫結束時的值。

儲存在靜態儲存區,整個程式執行期間都不釋放,編譯時賦初值,而後,每次呼叫時,重新賦值。

定義區域性變數時,如果不賦初值,對靜態區域性變數來說,編譯時,自動賦初值為0或者是空字串,而對自動變數來說,測試乙個不確定的值。(每次呼叫時,儲存單元都釋放了,下次需要重新分配儲存單元)

缺點:多佔記憶體,且降低可讀性。

宣告暫存器變數(register)

允許將只用頻繁的變數放在cpu的暫存器中,無需再記憶體中讀取,提高效率,一般編譯系統會自動將合適的變數放在暫存器中。

宣告外部變數(extern)

可以用extern對全域性變數宣告,擴充套件作用域

一般將全域性變數的定義放在所有函式前,可以少宣告乙個extern,

兩個檔案中都使用了某個變數,可以在函式中宣告乙個外部變數,擴充套件作用域

宣告靜態外部變數(static)

本檔案的全域性變數前加上static,可以避免被其他檔案誤用,只作用於本檔案的外部變數。

內部函式與外部函式

定義時,前面加上static,這樣,該函式只限於被本檔案中其他函式所呼叫。

函式首部加上extern/不加則預設為外部函式,可以在乙個檔案中呼叫其他檔案中定義的函式,

使用函式原型,也可以擴充套件作用域,

#include 頭檔名
標頭檔案內,包含各個函式的宣告即可,結構體,類等也可以。

(課程設計中,多檔案組織形式)

20、標頭檔案和標準庫

一般包含:自定義型別宣告:結構體,類

函式宣告,內建函式定義,巨集定義,全域性變數定義,外部變數定義,

標頭檔案是原始檔的藉口(.**件與.cpp檔案)

一般使用者自己編寫的標頭檔案可以在檔名後面加上.h

21、一維陣列初始化,可以只對一部分元素賦初值,其他預設為0,全部元素賦初值的時候可以不指定長度。

二維陣列初始化,部分賦初值時,只對第一列開始的元素賦值,其餘賦值為0,並且,一般來說,一維長度可以不指定,二維必須指定。

22、字元陣列

基本的輸入輸出

char str[20];

cin>>str;

cout<23、c++的字串函式

一般標頭檔案宣告string或string.h

char str1[30]="kagura and mea"

char str2="kemurikusa"

1、字串連線函式,返回第乙個字元陣列的位址

cout<2、字串複製函式,將後者中的字元(可以為字串常量或字元陣列)複製(覆蓋)到前者中,n表示複製前n個字元

不可以直接直接賦值語句將常量賦給字元陣列

char str1[10],char str2="klito"

strcpy(str1,"aqua");

strcpy(str1,str2);

strcpy(str1,str2,2);

devc++前者可用,後者不可(話說,明明寫的一樣的變數,給我報未宣告,害的我害的複製前面宣告的)

3、字串比較函式strcmp

strcmp(str1,str2)

前者 等於,大於,小於 後者,返回0,一正整數,一負整數。

4、字串長度函式strlen()

char str1[20]="asuaalice";

strlen(str1)

返回的是字串的有效長度

有點太長了,另起一文,

二級c語言複習3

1棧支援子程式呼叫。棧是一種只能在一端進行進行插入或刪除的線性表,在主程式呼叫子程式時首先儲存主程式狀態,在執行子程式,最後把子程式結果返回到主程式中呼叫子程式的位置。2二叉樹性質 3 在任意一顆二叉樹中,度為 0的葉子結點總是比度為 2的結點多乙個。3軟體測試的目的是為了發現錯誤而執行程式的過程,...

二級C語言複習4

1樹是一種非線性結構,而迴圈佇列 帶鏈佇列和帶鏈棧都是線性結構。2迴圈佇列的隊頭指標與隊尾指標不是固定的,隊頭指標可能大於隊尾指標,有時也可能小於隊尾指標。3演算法的空間複雜度是指演算法在執行過程中所需要的記憶體空間。4n s圖提出用方框圖來代替傳統的程式流程圖,pad圖是問題分析圖,它是繼承程式流...

二級C語言複習5

1棧和佇列都是線性結點 2軟體的生命週期指軟體產品從提出 實現 使用維護到停止使用退役的過程。3繼承是面對物件的方法的乙個主要特點,是使用已有的類的定義作為基礎建立新類的定義技術。繼承是指能直接獲得已有的性質和特徵,而不必重複定義他們,所以說繼承是指類之間共享屬性和操作的 4層次模型的基本結構是樹形...