C 程式設計第一章

2021-09-26 23:32:35 字數 4860 閱讀 9251

c++被稱之為混合型語言

(1)、c++的函式和物件
c++將資料從乙個物件流向另乙個物件的流動抽象為流。

cin,標準輸入,cout,標準輸出1)、從流中獲取資料的操作稱為提取操作。

當程式需要執行鍵盤輸入時,使用提取操作符 「 >>」從cin輸入流中提取字元 。

2)、向流中新增資料的操作稱為插入操作。

當程式需要在螢幕上顯示輸出時,使用插入操作符 「 <

3)、c++標準輸入輸出的標頭檔案是iostream

#include

4)、命名空間是一種將程式庫名稱封裝起來的方法,提高了程式的效能和可靠性。使用命名空間,讓命名空間std內的名稱**。

using namespace std;

5)、c++使用原則:必須要先宣告,後使用。

6)、在c++中,使用const代替巨集定義,用關鍵字const修飾的識別符號是一類特殊的常量,稱為符號常量/const變數。在程式中不可被改變。

const int bufsize = 100;

7)、分析處理幾種特殊的語句,被稱為預處理語句。

預處理語句:巨集定義、檔案包含和條件編譯。(選擇題、填空題)

8)、書寫程式語句,應注意如下規則:

括號緊跟在函式名的後面,但在for和while後面,應用乙個空格與左空格以增加可隊形。

數**輸付的左右後面留乙個,以與表示式區別。

在表示引數時,逗號後面留乙個空格。

在for、do…while和while語句中,合理使用縮排、一對花括號和空行。

太長的程式行應分為兩行或者幾行,並注意選取合適的分行和縮排位置。

(2)、c++語言的特點

c++語言的標準模板庫(stl)

1)、函式過載

c++允許為同乙個函式定義幾個版本,從而使乙個函式名具有多種功能。

#include using namespace std;

int max(int,int); //宣告2個引數的函式原型

int max(int,int,int); //宣告3個引數的函式原型

void main()

int max(int a,int b)

int max(int a,int b,int c)

/** * 執行結果:

* 請輸入兩個整數值(使用空格區分):

* 35 25

* 35和25中最大的整數值為:35

* 請輸入三個整數值(使用空格區分):

* 25 39 35

* 25、39、35中最大的整數值為:39

*/

2)、新的基本資料型別和注意事項

① void是無型別識別符號,只能用來宣告函式的返回值型別,不能用來宣告變數;

② c++標準限定int和short至少要有16位,而long至少32位,short不得長於int,int不得長於long,int使用4位元組;

//宣告並定義乙個物件,使用"&"來獲取物件的儲存位址並輸出

void example1()

④ c++中的整數常量有四種型別:十進位制常量、長整型常量、八進位制常量和十六進製制常量,並用字首和字尾進行分類標識(選擇題)

//整數常量示例

void example2()

⑤ 可以用字尾表示浮點常量的型別,帶f或f的是float型別;l或l表示它是long double型別;沒有字尾則是double型別(選擇題)

//浮點型常量示例

void example3()

//申請可以儲存size個該資料型別的物件

new 型別名 [size]

不使用時,可以使用「delete指標名」釋放空間(選擇題、填空題)

void example4()

for(int k=0;k4)、引用

引用就是為現有的物件起乙個別名,選定命名時使用「引用」運算子"&",它將乙個新識別符號與一塊已經存在的儲存區域相關聯,引用並沒有分配新的儲存區域,它本身並不是新的資料型別。如下簡單示例:

#include using namespace std;

void example5()

理解引用的兩點:(重點理解)

① 引用實際上就是變數的別名,它同變數在使用形式上是完全一樣的,它只作為一種標識物件的手段。不能直接宣告對陣列的引用,不能宣告引用的引用,可以宣告對指標的引用,也可以宣告指向引用的指標。

② 引用與指標有相似之處,它可以對記憶體位址上存在的變數進行修改,但它不占用新的位址,從而節省開銷。指標是低階的直接操作記憶體位址的機制,指標功能強大但極易產生錯誤;引用則是較高階的封裝了指標的特性,它並不直接操作記憶體位址,不可以由強制型別轉換而得,因而具有較高的安全性。

如何建立對陣列的引用,可以通過typedef來實現,如下示例:

#include using namespace std;

void example6(); //對陣列進行初始化

array &b = a; //引用陣列a

a[1] = 100; //改變陣列a中的值

for(int i = 0;i5)、對指標使用const限定符(選擇題)

① 指向常量的指標

指向常量的指標是在非常量指標前面使用const,例如:const int *p; 它告訴編譯器"*p"是常量,不能將"*p"作為左值來操作,如下:

const int y = 50;

const int *p = &y;//指向常量的指標指向y,y是常量,不可以作為左值

再比如:

int x = 20;

const int *p = &x;//這時"*p"不能作為左值,但可以使用"x="來改變x的值,所以這個const僅僅是限定了使用"*p"的方式

② 常量指標

把const限定符放在*號的右邊,使指標本身成為乙個const指標,如下:

int x = 5;

int * const p = &x;//這個指標本身就是常量,編譯器要求給它乙個初始值,這個值在整個指標的生存週期都不會改變,但可以使用"*p="來改變其值

③ 指向常量的常量指標

例如:

int x = 2;

const int * const p = &x;//這時告訴編譯器*p和p都是常量,限制了"&"和"*"運算子

6)、泛型演算法應用於普通陣列

要輸出陣列的內容、對陣列進行公升冪排序、反轉陣列的內容、複製陣列的內容等操作,需要包含標頭檔案

reverse(a,a+length);			//陣列元素反轉排列

copy(a,a+length,b); //將陣列a的內容複製到陣列b

reverse_copy(a,a+length,b); //將陣列a的內容以逆向方式複製到陣列b

sort(a,a+length); //預設是公升冪排序

copy(a,a+length,ostream_iterator(cout,"字串")); //將陣列內容按正向方式輸送到螢幕

copy(a,a+length,ostream_iterator(cout," ")); //在每個輸出元素後面增加乙個空格

copy(a,a+length,ostream_iterator(cout,"\n")); //在輸出每個元素之後,換行

要對陣列進行降冪排序和檢索,需要包含標頭檔案

sort(b,b+length,greater());		//陣列降冪排序

find(a,a+length,value); //查詢陣列a內是否存在值為value的元素,它返回的是位置指標

7)、資料的簡單輸入輸出格式

c++提供了兩種格式控制方式:一種是使用iso_base類提供的介面;另一種是使用一種稱為操控符的特殊函式,它的特點是可直接包含在輸出和輸入表示式中。不帶形式引數的操控符定義在標頭檔案中,帶形式引數的操控符定義在標頭檔案中。

常用操控符及含義

名稱含義

dec設定轉換基數為十進位制

oct設定轉換基數為八進位制

hex設定轉換基數為十六進製制

endl

輸出乙個換行符並重新整理流

resetiosflags和setiosflags的引數flag是引用c++的類ios_base裡定義的列舉常量,所以要使用限定符"::"

(3)、程式的編輯、編譯和執行的基本概念

用c++語言寫成的程式被稱為源程式,源程式必須經過c++編譯器程式翻譯成機器語言才能執行,其大概過程如下:

① 先使用編輯器編輯乙個c++源程式my.cpp;

② 然後使用c++編譯器對這個源程式進行編譯,產生my.obj檔案;

③ 再使用連線程式,將my.obj變成my.exe可執行檔案。

第一章 C 程式設計

今天終於下定決心將資料結構與演算法重新在複習一遍,先是c 的一些比較容易忘記的特性簡單的溫習一遍 包括遞迴呼叫,異常操作,類模板,函式模板等等,這三天寫得原始碼如下 book name c structure and algorithm filename chapter1.cpp version 1...

C 程式語言(第一章)

一.全書結構 1,1 3章,c 程式設計風格,以及有關c 標準庫的綜述 2,4 9章,c 內部型別 3,10 15,c 物件導向和通用型程式設計 4,16 22,c 標準庫 5,23 25,設計和開發軟體 6,附錄 二.給c程式設計師得建議 1,c 裡幾乎不需要用巨集,用const或enum定義明顯...

c 程式設計思想 第一章

第一章 物件導言。7 19 在這一章討論了物件導向程式設計 opp 的思想和如何用這一思想解決軟體危機的問題。物件 我們可以設定乙個物件,並對他發出請求 發出乙個訊息 使它能夠為我們完成某種功能,可以向物件發出的請求是由他的介面 inte ce 定義的,而介面由型別確定。對於物件導向程式設計的三個特...