天天看點

c語言基礎知識大全官網,C語言基礎知識全集

c語言基礎知識大全官網,C語言基礎知識全集

C語言基礎知識全集

第1章 C++語言基礎 nC++是一種以C語言為基礎開發的進階語 言,一般認為C是C++的一個子集或基礎 語言,但二者又是完全獨立的。 nC++适合大型程式的開發與設計 nC則适合于更底層的項目開發 1.1 C++語言概述 1.1.1 标準C++ nC++發明者:Bell實驗室Bjarne Stroustrup 博士 nC++第一定義:“帶類的C” ¨C++保留了C作為一個子集 ¨C++從Simula語言引入了類的概念,包括派生 類和虛函數;借鑒了Algol語言的運算符重載等 特性。 1.1.1 标準C++(續) n起初,C++編譯系統隻是一個預編譯系統。 n1988年,出現一個真正的C++編譯系統。 n1998年,ISO/ANSI C++标準正式通過并發 布。 n總體上,C++是一種混合語言,是集過程化 設計、面向對象、基于對象和泛型算法等 多種技術于一體的程式設計語言。 n學習C++最重要的是集中關注概念,不要迷 失在語言的技術細節中。 1.1.2 C++語言的簡單程式 #include using namespace std; int main( ) { int x = 10, y = 20; int z = x+y; cout //頭檔案包含 using namespace std; //名字空間聲明 ¨可以将一個名字空間了解成包含若幹定義的一 個區域的名字。 ¨标準C++所有定義都屬于名字空間std。 1.1.2 C++語言的簡單程式(續) n3 注釋 nC++的“塊注釋”:/*和*/為分界符号 ,與C中的用法一緻。 nC++的“行注釋”:以//符号開始到一行 的結束。 n使用注釋符時的注意事項: ¨标志符‘/’和‘*’,‘/’和‘/’之間不可 以分開。 ¨注釋符對“”不可以嵌套。 ¨注釋符//之後的注釋結束于本行。 ¨//和可以嵌套使用。 1.1.2 C++語言的簡單程式(續) n思考題:下列程式是否正确? #include using namespace std; int main() { 的字樣 */ cout ”告訴C++編譯器,将檔案 iostream内容插到此程式中。 niostream中定義了一組标準類輸入輸出流(I/O stream)類。 n流——八位的位元組序列。 ncout是标準輸出流類的一個預定義的對象,代表 控制台輸出裝置(console out)如:顯示器。 ncin是cout的反義詞,控制台輸入,如鍵盤。 1.1.2 C++語言的簡單程式(續) ncin與cout說明 ¨用來取代scanf和printf,更安全、更友善。 1 格式控制符與輸出資料的類型不一緻 2 scanf()的第二個參數應是一個指針參數,以上錯誤C編 譯器不能檢查出來。 #include void main() { int i; float f; scanf(“%f”,i); printf(“%d”,f); } #include using namespace std; void main() { int i; float f; cini; cout”在C++中仍保持C中“右移”功能 ,但用于輸入時擴充了其功能,表示将從标準輸 入流(鍵盤)讀取的數值傳送給右方指定的變量。 如:cinx; //鍵盤輸入的資料自動轉換為變量X 的類型,并存入變量X内。 n可以連續輸,如cinabc;不用顧忌類型。 它按書寫順序從鍵盤上提取所要求的資料,并存 入對應的變量中。 n用cin輸入時,要注意使用間隔符 (空格、回車 、Tab鍵)。 1.1.2 C++語言的簡單程式(續) §cout中運算符“ using namespace std; void main() { int x=25; couthexx‘’decx‘’octx‘\n’; } 輸出結果:19 25 31 1.1.2 C++語言的簡單程式(續) n5 靈活的局部變量聲明 下面局部變量聲明是否正确?為什麼? f ( ) { int i; i=10; int j; j=25; //… } 1.1.2 C++語言的簡單程式(續) n6 編碼習慣 ¨盡量保持好的書寫風格是必須養成的習慣。 ¨要注意程式的書寫格式,如縮進格式和成對符 号的對齊排列等。 1.2 面向對象的程式設計思想 nC向C++過渡的實質是由過程化程式設計 思想向面向對象程式設計的思想的轉變。 程式設計語言的發展 硬體發展——軟體危機——結構化程式設計 ——軟體工程——面向對象技術 機器碼——低級——進階; 1.2.1 過程化的程式設計 n面向過程程式設計 ¨它是早期的程式設計範型,它考察整個設計過 程,以功能分解為中心。 n面向過程的特征 ¨早期程式設計者認為: 程式 = 資料結構 + 算法 這個公式貫穿于整個程式設計的始終,無論程 序是系統程式還是子產品程式。 1.2.1 過程化的程式設計(續) n過程化的問題處理思路形成了一套有效的 程式設計方法,稱為結構化方法。 ¨程式設計采用自頂向下,逐漸細分的方法展開 。 ¨子產品化 ¨使用三種基本控制結構:順序、選擇、循環。 n三種結構的共同點:每種結構隻有一個入口和一個 出口。 1.2.1 過程化的程式設計(續) n過程化方法應用舉例: int main( ) { 開始函數(); 繪制畫面函數(初始棋局); 重複下述步驟 { 走棋函數(黑子); 如果(判斷輸赢(棋局)==已定出輸赢)停止重複 ; 走棋函數(白子); 繪制畫面函數(棋局); 如果(判斷輸赢(棋局)==已定出輸赢)停止重複; } 輸出結果函數(棋局); 結束函數(); } 1.2.1 過程化的程式設計(續) n面向過程的不足 ¨強調功能分解,為了實作功能,有時資料結 構屈從于算法,結果造成資料結構和過程的 分離。 n由于過程化設計中的資料與過程是互相獨立的 ,一個過程完全可以作用到并不相關的資料上 ,也不能保證對資料操作的合理性,資料對于 算法完全是被動的。 n此種操作是一種“謂語+賓語”結構。 ¨對于龐大、複雜的程式難以開發和維護 1.2.2 面向對象的程式設計 n面向對象程式設計 ¨是一種以對象為中心的程式設計範型。也可以 說是一套概念和想法,它與面向過程程式設計 相對應,是一種用計算機程式來描述實際問題 的思路。 n面向對象的特征 ¨OO(Object-Oriented)程式設計者認為: 程式 = 對象 + 消息 這個公式表明面向對象的程式以對象為程式組 成機關,以消息為動力(驅動)。 1.2.2 面向對象的程式設計(續) n面向對象方法應用舉例: int main() { 定義對象,包括黑棋選手,白棋選手,裁判,組織者; 裁判确定比賽開始(); 組織者繪制畫面(); 重複下述步驟 { 黑棋選手.走棋(); 如果(裁判.判斷輸赢()==已定出輸赢)停止重複; 白棋選手.走棋(); 組織者.繪制畫面(); 如果(裁判.判斷輸赢()==已定出輸赢)停止重複; } 組織者.輸出結果(); 裁判.确定比賽結束(); } 1.2.2 面向對象的程式設計(續) n面向對象的好處 ¨以對象為機關組織程式,更接近人思維方式, O