以下編輯於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層次模型的基本結構是樹形...