c語言基礎ppt課件_第1頁
c語言基礎ppt課件_第2頁
c語言基礎ppt課件_第3頁
c語言基礎ppt課件_第4頁
c語言基礎ppt課件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C言語根底言語根底 3.1、C+言語的特點言語的特點 3.2、簡單的、簡單的C+程序程序 3.3、C+編程簡介編程簡介 3.4、C+根本數(shù)據(jù)類型根本數(shù)據(jù)類型 3.5、表達式、表達式 3.6、C+根本語句根本語句 3.7、函數(shù)、函數(shù) 3.8、const修飾符修飾符 第三章第三章 C言語根底言語根底 3.9、動態(tài)內(nèi)存分配運算符、動態(tài)內(nèi)存分配運算符new和和delete 3.10、作用域運算符、作用域運算符 3.11、援用、援用 3.12、C+針對針對C言語的改良言語的改良 3.13、綜合訓練、綜合訓練 3.1、C+言語的特點言語的特點 C+堅持與堅持與C兼容:兼容: C+=C+面向?qū)ο竺嫦驅(qū)ο?(

2、2) 用用C+編寫的程序可讀性更好,代碼的構(gòu)造更編寫的程序可讀性更好,代碼的構(gòu)造更 加合理加合理 (3) 生成的代碼的質(zhì)量高,運轉(zhuǎn)速度快生成的代碼的質(zhì)量高,運轉(zhuǎn)速度快 (5) 支持面向?qū)ο蟮臋C制,可以方便的構(gòu)造出模擬現(xiàn)支持面向?qū)ο蟮臋C制,可以方便的構(gòu)造出模擬現(xiàn) 實問題的實體和操作實問題的實體和操作 (4) 從開發(fā)時間、費用到軟件的可重用性、可擴展性、從開發(fā)時間、費用到軟件的可重用性、可擴展性、 可維護性和可靠性等方面有了很大的提高可維護性和可靠性等方面有了很大的提高 A、 C+編譯器可編譯編譯器可編譯C程序;程序; B、C言語的庫函數(shù)和適用軟件可以用于言語的庫函數(shù)和適用軟件可以用于C+中中 3

3、.2、簡單的、簡單的C程序程序 #include int add(int a,int b); int main() int x,y,sum; cout“Enter two numbers:x; /從鍵盤輸入變量從鍵盤輸入變量x的值的值 ciny; /從鍵盤輸入變量從鍵盤輸入變量y的值的值 sum=add(x,y); /調(diào)用函數(shù)調(diào)用函數(shù)add,將得到的值賦給變量,將得到的值賦給變量sum cout“The sum is:sumxy; 3.3、C+編程簡介編程簡介 頭文件頭文件 主函數(shù)主函數(shù)main() 注釋注釋 新的輸入輸出語句新的輸入輸出語句 C+源程序的組成構(gòu)造:源程序的組成構(gòu)造: 3.3、

4、C+編程簡介編程簡介 現(xiàn)到類庫中查找,再到當前工程所在目錄查找,最后現(xiàn)到類庫中查找,再到當前工程所在目錄查找,最后 到默許途徑查找到默許途徑查找 與與 “的區(qū)別:的區(qū)別: “ 現(xiàn)到當前工程所在目錄查找,再到類庫中查找,最后現(xiàn)到當前工程所在目錄查找,再到類庫中查找,最后 到默許途徑查找到默許途徑查找 與與 “在用戶定義了與頭文件同名的文件時需求在用戶定義了與頭文件同名的文件時需求 留意留意 3.3、C+編程簡介編程簡介 /符號的注釋范圍是從符號的注釋范圍是從/開場到這一行終了也就開場到這一行終了也就 是從是從/符號到換行符號之間的范圍符號到換行符號之間的范圍 注釋:注釋: /*.*/與與/均可運

5、用,但沒有均可運用,但沒有/符號方便符號方便 3.3、C+編程簡介編程簡介 試比較下面兩種輸入輸出:試比較下面兩種輸入輸出: /*c言語的輸入輸出言語的輸入輸出*/ int a ,b ; scanf(“%d, /輸入變量輸入變量a printf(“%d, b ) ; /輸出變量輸出變量b /*c+言語的輸入輸出言語的輸入輸出*/ int a ,b ; cina ; /輸入變量輸入變量a coutb); 4、布爾類型、布爾類型 :用于表示真、假的數(shù)據(jù)類型:用于表示真、假的數(shù)據(jù)類型 布爾類型分配布爾類型分配1個字節(jié)的空間個字節(jié)的空間 特殊的存放方式,使得表數(shù)范圍、精度提高特殊的存放方式,使得表數(shù)范

6、圍、精度提高 僅有僅有true真和真和false假兩個取值假兩個取值 3.4、C+根本數(shù)據(jù)類型根本數(shù)據(jù)類型 例如錯誤的聲明:例如錯誤的聲明:void a ; 5、空類型、空類型 : 空類型的作用:空類型的作用: 1一個是描畫一個函數(shù)沒有前往值,例如:一個是描畫一個函數(shù)沒有前往值,例如: void f(int x) ; 沒有空類型的對象或數(shù)據(jù)存在,也就是說空類型是不用沒有空類型的對象或數(shù)據(jù)存在,也就是說空類型是不用 作變量的類型作變量的類型 2描畫一個指向不明類型對象的指針,例如:描畫一個指向不明類型對象的指針,例如: void *p ; 3.4、C+根本數(shù)據(jù)類型根本數(shù)據(jù)類型 6、用戶自定義類型

7、、用戶自定義類型 : 用戶定義數(shù)據(jù)類型 數(shù) 組 指 針 構(gòu) 造 體 結(jié) 合 類枚 舉 3.4、C+根本數(shù)據(jù)類型根本數(shù)據(jù)類型 enum colorred, yellow, blue; /定義類型定義類型 color cl=red; /定義變量定義變量 7、枚舉、枚舉 : color cl=black; /錯誤!錯誤! 當一個變量只需幾個取值時運用枚舉類型,比如:當一個變量只需幾個取值時運用枚舉類型,比如: 枚舉變量的值在內(nèi)存中以整型值存放枚舉變量的值在內(nèi)存中以整型值存放 比如:比如:red為為0, yellow為為1, blue為為2 在在C+中定義變量時,構(gòu)造名、結(jié)合名或枚舉名前的中定義變量時

8、,構(gòu)造名、結(jié)合名或枚舉名前的struct、 union或或enum可省略可省略 3.5、表達式、表達式 算數(shù)表達式:算數(shù)表達式:+ - * / % + - 賦值表達式:賦值表達式:= 關(guān)系表達式關(guān)系表達式 := = = != 邏輯表達式:!邏輯表達式:! 函數(shù)定義函數(shù)定義 1、簡介、簡介 函數(shù)參數(shù)函數(shù)參數(shù) 函數(shù)調(diào)用函數(shù)調(diào)用 3.7、函數(shù)、函數(shù) 2、C的函數(shù)重載:的函數(shù)重載: 當兩個或者兩個以上的函數(shù)共用一個函數(shù)名時,稱為函數(shù)重當兩個或者兩個以上的函數(shù)共用一個函數(shù)名時,稱為函數(shù)重 載。被重載的函數(shù)稱為重載函數(shù)載。被重載的函數(shù)稱為重載函數(shù) 舉例:舉例: /重載的函數(shù)類型聲明重載的函數(shù)類型聲明 in

9、t do_stuff(const int); int do_stuff(float); float do_stuff(const float,float); /重載函數(shù)重載函數(shù)1-重載整型變量重載整型變量 int do_stuff(const int in_value) return in_value*in_value; 3.7、函數(shù)、函數(shù) /重載函數(shù)重載函數(shù)2重載浮點型變量重載浮點型變量 int do_stuff(float in_value) return (int)(3.0*in_value); /重載函數(shù)重載函數(shù)3重載變量個數(shù),重載變量個數(shù),2個浮點型變量個浮點型變量 float do

10、_stuff(const float in1,float in2) return (in1+in2)/2.0; 編譯器會根據(jù)實參的類型來自動確定調(diào)用哪個重載函數(shù)編譯器會根據(jù)實參的類型來自動確定調(diào)用哪個重載函數(shù) 3.7、函數(shù)、函數(shù) 3、C中的內(nèi)置函數(shù)內(nèi)聯(lián)函數(shù)中的內(nèi)置函數(shù)內(nèi)聯(lián)函數(shù) 每當程序中出現(xiàn)對該函數(shù)的調(diào)用時,每當程序中出現(xiàn)對該函數(shù)的調(diào)用時,C編譯器運用函數(shù)體編譯器運用函數(shù)體 中的代碼替代函數(shù)調(diào)用表達式,這樣能加快代碼的執(zhí)行,減中的代碼替代函數(shù)調(diào)用表達式,這樣能加快代碼的執(zhí)行,減 少普通函數(shù)調(diào)用的開銷。少普通函數(shù)調(diào)用的開銷。 在函數(shù)闡明前冠以關(guān)鍵字在函數(shù)闡明前冠以關(guān)鍵字“inline的函數(shù)。的函

11、數(shù)。 C的內(nèi)置函數(shù)具有與的內(nèi)置函數(shù)具有與C中的宏定義中的宏定義#define一樣的作用和一樣的作用和 類似的機理,但是消除了類似的機理,但是消除了#define的不平安要素的不平安要素 3.7、函數(shù)、函數(shù) 舉例舉例 #include /定義一個類定義一個類A class A int inttest; public: A(); void show(); void increat(int incr_num=2) inttest+=incr_num; ; /類內(nèi)部定義的函數(shù)默類內(nèi)部定義的函數(shù)默 /以為內(nèi)聯(lián)函數(shù)以為內(nèi)聯(lián)函數(shù) 假設沒有實參假設沒有實參 那么默以為那么默以為2 3.7、函數(shù)、函數(shù) A:A(

12、) /構(gòu)造函數(shù)構(gòu)造函數(shù) inttest=1000; cout“OK?endl; inline void A:show() /經(jīng)過經(jīng)過inline定義的內(nèi)聯(lián)函數(shù)定義的內(nèi)聯(lián)函數(shù) cout“nittest=inttestendl; /主函數(shù)主函數(shù) void main() A test; /對象聲明對象聲明 test.show(); /向向A發(fā)送音訊發(fā)送音訊 test.increat(1234); /調(diào)用類內(nèi)部定義的內(nèi)聯(lián)函數(shù)調(diào)用類內(nèi)部定義的內(nèi)聯(lián)函數(shù) test.show(); 3.8、const修飾符修飾符 例如例如: const int START=3; /定義整型常量定義整型常量START cons

13、t int STOP=9; /定義整型常量定義整型常量STOP 在程序中在程序中START和和STOP的值都不允許改動的值都不允許改動 C+引入引入const修飾符關(guān)鍵字:修飾符關(guān)鍵字: 用于修飾常量,運用用于修飾常量,運用const修飾的對象在運轉(zhuǎn)過程中不允許改動。修飾的對象在運轉(zhuǎn)過程中不允許改動。 3.8、const修飾符修飾符 運用運用const修飾符本卷須知:修飾符本卷須知: (1) 常量必需在聲明時被初始化。比如:常量必需在聲明時被初始化。比如: const int a;/錯誤,沒有初始化錯誤,沒有初始化 (2) 留意分清常量指針和指向常量的指針:比如留意分清常量指針和指向常量的指針

14、:比如 常量指針常量指針 :指向的數(shù)據(jù)可以改動,但是所指的位置是不能變的;:指向的數(shù)據(jù)可以改動,但是所指的位置是不能變的; char *const name chen; char *name1=“Hi!; name=name1; /不允許!不允許! name1=H; /允許!允許! chen0 name Hi0 name 1 3.8、const修飾符修飾符 指向常量的指針:所指的對象是一個常量,不允許改動,指向常量的指針:所指的對象是一個常量,不允許改動, 但可以指向其他的對象但可以指向其他的對象 const char *name = “chen; char *name1=“Hi!; name

15、=name1; /允許!允許! name2=H; /不允許!不允許! 指向常量的常指針:所指的對象和所指的位置即指針都不指向常量的常指針:所指的對象和所指的位置即指針都不 能改動能改動 const char *const name = “chen; 3.8、const修飾符修飾符 (3) 假設假設const定義的是一個整型常量,關(guān)鍵字定義的是一個整型常量,關(guān)鍵字int可以省略可以省略 例如:例如: const int LIMIT100; const LIMIT100; 這兩個語句是一樣的這兩個語句是一樣的 (4) const的作用與的作用與#define類似,但它消除了類似,但它消除了#def

16、ine的不的不 平安性,建議在能夠的情況下,用平安性,建議在能夠的情況下,用const替代替代#define 3.8、const修飾符修飾符 舉例:舉例: #include /C+輸入輸出流頭文件輸入輸出流頭文件 void print_it(const int data_value) ; /const修飾函數(shù)參數(shù)修飾函數(shù)參數(shù) main() const int START=3; /定義整型常量定義整型常量START const int STOP=9; /定義整型常量定義整型常量STOP int index; for(index=START; indexSTOP; index+) print_it

17、(index); return 0; void print_it(const int data_value) data_value=12; /編譯出錯編譯出錯 cout“The value of the index is data_valuen; / 3.9、動態(tài)內(nèi)存分配運算符、動態(tài)內(nèi)存分配運算符new和和delete 1、new和和delete的作用的作用 進展內(nèi)存的分配和釋放進展內(nèi)存的分配和釋放 例如:例如: int *point1; char *point2; point1=new int; /初始化指針初始化指針point1 point2=new char; /重新初始化指針重新初始化

18、指針point2 delete point1; /銷毀指針銷毀指針point1,釋放,釋放point1所指所指 /變量的內(nèi)存空間變量的內(nèi)存空間 delete point2; /釋放指針釋放指針point2 與與C中的中的malloc()和和free()類似,但更好、更簡單類似,但更好、更簡單 留意:懇求的內(nèi)存運用完后要及時的釋放,否那么能夠會出問留意:懇求的內(nèi)存運用完后要及時的釋放,否那么能夠會出問 題題 3.9、動態(tài)內(nèi)存分配運算符、動態(tài)內(nèi)存分配運算符new和和delete 2、new和和delete的運用闡明的運用闡明 (1) new可以自動計算所要分配內(nèi)存類型的大小,而不用要運可以自動計算

19、所要分配內(nèi)存類型的大小,而不用要運 用用sizeof() (2) new可以自動前往正確的指針類型,不需求進展指針類型可以自動前往正確的指針類型,不需求進展指針類型 轉(zhuǎn)換轉(zhuǎn)換 (3) 運用運用new可以將分配的對象初始化。例如:可以將分配的對象初始化。例如: int *p new int(99); struct student *p1; p1 = (struct student *) malloc(sizeof (struct student); (4) 運用運用new可以為數(shù)組動態(tài)分配內(nèi)存空間,這時需求在類型可以為數(shù)組動態(tài)分配內(nèi)存空間,這時需求在類型 名后面加上綴上數(shù)組的大小。例如:名后面加

20、上綴上數(shù)組的大小。例如: int *pi=new int10;括號不同括號不同 3.9、動態(tài)內(nèi)存分配運算符、動態(tài)內(nèi)存分配運算符new和和delete 關(guān)于數(shù)組運用關(guān)于數(shù)組運用new和和delete的留意:的留意: 對于數(shù)組,在用對于數(shù)組,在用delete釋放時要在前面用括號釋放時要在前面用括號 即,假設在即,假設在new時運用括號,那么時運用括號,那么delete時也要運用括號時也要運用括號 string *stringptr2 = new string100; delete stringptr2; / 刪除數(shù)組的分配空間刪除數(shù)組的分配空間 野指針:所指空間被釋放后的指針,應置為野指針:所指空

21、間被釋放后的指針,應置為NULL 3.9、動態(tài)內(nèi)存分配運算符、動態(tài)內(nèi)存分配運算符new和和delete 舉例:舉例: #include /C+輸入輸出流頭文件輸入輸出流頭文件 main() /主程序主程序 int index, *point; /聲明變量聲明變量 point= /初始化指針初始化指針point *point=77; /改動指針改動指針point所指的變量的值所指的變量的值 point=new int; /重新初始化指針重新初始化指針point *point=999; coutThe value are index *point /輸出結(jié)果輸出結(jié)果 n; delete point

22、; /銷毀指針銷毀指針point1 char *c_point; /聲明指向字符的指針聲明指向字符的指針 3.9、動態(tài)內(nèi)存分配運算符、動態(tài)內(nèi)存分配運算符new和和delete c_point=new char37; /初始化指針初始化指針c_point delete c_point; /釋放指釋放指c_point c_point=new charsizeof(int)+133; /重新初始化指重新初始化指 /針針c_point delete c_point; /釋放指針釋放指針c_point return 0; 定義什么?多大?定義什么?多大? 3.10、作用域運算符、作用域運算符: 1、作用

23、域運算符、作用域運算符:的作用的作用 (1) 運用類的靜態(tài)成員:運用類的靜態(tài)成員:classname:membername (2) 解除被隱藏全局函數(shù)或變量解除被隱藏全局函數(shù)或變量 #include int num=1;/全局變量全局變量 main() int num=2;/部分變量部分變量 coutnumendl; /顯示部分變量顯示部分變量 cout:numendl; /顯示全局變量顯示全局變量 3.11、援用、援用(reference) 1、援用的作用定義和語法、援用的作用定義和語法 定義:為目的變量其別名,使之與目的變量地址關(guān)聯(lián)定義:為目的變量其別名,使之與目的變量地址關(guān)聯(lián) 簡化指針的

24、運用簡化指針的運用 語法:語法: type /聲明一個整型變量聲明一個整型變量 int /聲明一個援用聲明一個援用j指向整型變量指向整型變量I j=4; 不是取地址符不是取地址符 i和和j具有一樣地址空間,具有一樣地址空間, /聲明一個整型變量聲明一個整型變量 int /聲明一個援用聲明一個援用j指向整型變量指向整型變量i int *k= /聲明了指向聲明了指向i的指針變量的指針變量k /改動變量改動變量i的值的值 i+; /經(jīng)過變量經(jīng)過變量i本身加本身加1改動變量的值改動變量的值 j+; /經(jīng)過援用改動變量的值經(jīng)過援用改動變量的值 (*k)+; /經(jīng)過指針改動變量的值經(jīng)過指針改動變量的值 c

25、out=0; k-) 程序代碼段;程序代碼段; /在這里,變量在這里,變量K只在只在for循環(huán)域中有效。循環(huán)域中有效。 3.12、C+針對針對C言語的改良言語的改良 普通原那么:普通原那么: 在大函數(shù)中,在最接近運用變量的位置闡明變量較為合理在大函數(shù)中,在最接近運用變量的位置闡明變量較為合理 在較短的函數(shù)中,部分變量集中在函數(shù)的開場處闡明比較好在較短的函數(shù)中,部分變量集中在函數(shù)的開場處闡明比較好 在在for循環(huán)語句中,普通在循環(huán)語句中,普通在for語句中闡明循環(huán)變量語句中闡明循環(huán)變量 3.12、C+針對針對C言語的改良言語的改良 2、無名結(jié)合、無名結(jié)合 C+中的一種特殊結(jié)合,定義的結(jié)合沒有類型

26、名中的一種特殊結(jié)合,定義的結(jié)合沒有類型名 舉例:舉例: union int i; float f; 變量變量i和和f具有一樣的存儲地址具有一樣的存儲地址 可直接援用其數(shù)據(jù)項,如:可直接援用其數(shù)據(jù)項,如: i20; /運用變量運用變量i 3.12、C+針對針對C言語的改良言語的改良 3、強迫類型轉(zhuǎn)換、強迫類型轉(zhuǎn)換 C+引入新方式的強迫類型轉(zhuǎn)換引入新方式的強迫類型轉(zhuǎn)換 C言語中:言語中: int i=10; float x=(float)i; C+中:中: int i=10; float x=float(i); /類型名像函數(shù)名一樣運用類型名像函數(shù)名一樣運用 兩種方法在兩種方法在C+都可以運用,但

27、引薦運用后面的一種方式都可以運用,但引薦運用后面的一種方式 本章小結(jié)本章小結(jié) 不同的頭文件不同的頭文件 不同的注釋方式不同的注釋方式 不同的輸入輸出語句不同的輸入輸出語句 添加了布爾類型添加了布爾類型 函數(shù)重載、內(nèi)聯(lián)函數(shù)函數(shù)重載、內(nèi)聯(lián)函數(shù) 添加了添加了const修飾符修飾符 不同的動態(tài)內(nèi)存分配運算符不同的動態(tài)內(nèi)存分配運算符new和和delete 作用域運算符作用域運算符: 援用援用 本章小結(jié)本章小結(jié) 援用是援用是C+中獨有的特性,援用的目的主要用在函數(shù)的中獨有的特性,援用的目的主要用在函數(shù)的 參數(shù)傳送中,處理了大對象傳送效率和空間不如意的問題。參數(shù)傳送中,處理了大對象傳送效率和空間不如意的問題

28、。 相比指針,它有表達明晰的優(yōu)點,不允許聲明援用數(shù)組,前相比指針,它有表達明晰的優(yōu)點,不允許聲明援用數(shù)組,前 往援用的時候,要留意部分對象前往的危險。往援用的時候,要留意部分對象前往的危險。 為了順應為了順應C引入的類的概念,類對象的建立是分配空間引入的類的概念,類對象的建立是分配空間 ,構(gòu)造構(gòu)造和初始化三部分,因此引入了,構(gòu)造構(gòu)造和初始化三部分,因此引入了new和和delete進展堆進展堆 空間的分配和釋放??臻g的分配和釋放。 綜合訓練綜合訓練 標題:編寫標題:編寫C+風格的程序,實現(xiàn)求風格的程序,實現(xiàn)求m,n兩個正整數(shù)的最大兩個正整數(shù)的最大 公約數(shù)和最小公倍數(shù)公約數(shù)和最小公倍數(shù) 分析:分析: 只需求出最大公約數(shù)即可,由于:只需求出最大公約數(shù)即可,由于: 最小公倍數(shù)最小公倍數(shù)=mn最大公約數(shù)最大公約數(shù) 最大公約數(shù)的計算可用歐幾里德算法也稱輾轉(zhuǎn)相除法:最大公約數(shù)的計算可用歐幾里德算法也稱輾轉(zhuǎn)相除法: 1求兩個數(shù)求兩個數(shù)m、n相除的余數(shù)相除的余數(shù)r(r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論