




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 C+基礎(chǔ) 2.1 常量與變量2.2 指針與引用2.3 動(dòng)態(tài)內(nèi)存分配2.4 位運(yùn)算符2.5 名字空間常量在程序運(yùn)行中,其值不能被改變的量稱為常量。常量又分為直接常量和符號(hào)常量?jī)煞N。1. 直接常量:直接使用數(shù)值或文字表示的值(1)整型常量 如:10、-20、0 或八進(jìn)制或十六進(jìn)制表示:如034、0 x23 (2)實(shí)型常量 如:2.18、-5.6、2.3E+2、-3.12E-2 不帶后綴的實(shí)型常量為 double 型,帶后綴 F 或 f 可表示單精度實(shí)型常量2.1 常量與變量常量(續(xù)一)(3)字符型常量 以單引號(hào)括起來(lái)的單個(gè)字符:如a、3、* 轉(zhuǎn)義字符:鍵盤不便于直接輸入的字符,如回車符、制
2、表符等,通常以 “ ” 開頭 表2.3 轉(zhuǎn)義字符 雙引號(hào) 單引號(hào) 字符 a響鈴 b 退格 n換行 r回車 t水平制表 v垂直制表0003位八進(jìn)制數(shù)所代表的字符,如 101 代表Axhh2位16進(jìn)制所代表的字符,如 x41 代表A2.1 常量與變量常量(續(xù)二)(4)bool型常量 bool常量只有兩個(gè):true(真)、false(假) 在內(nèi)存中占有一個(gè)字節(jié)的存儲(chǔ)空間(5)字符串常量 由一對(duì)雙引號(hào)括起來(lái)的若干字符,如“abc” 字符串常量的末尾自動(dòng)加入結(jié)束標(biāo)志 0,因此字符串在內(nèi)存中占有的字節(jié)數(shù)為 字符個(gè)數(shù)+1 若字符串中包含特殊字符,如 、回車、制表符等,也應(yīng)以它們對(duì)應(yīng)的轉(zhuǎn)義字符形式表示2.1
3、常量與變量例2.1 檢測(cè)基本數(shù)據(jù)類型所占的字節(jié)數(shù)#include void main()cout int: sizeof(int) endl;cout short: sizeof(short) endl;cout long: sizeof(long) endl;cout float: sizeof(float) endl;cout double: sizeof(double) endl;cout long double: sizeof(long double) endl;cout char: sizeof(char) endl;cout bool: sizeof(bool) endl;int:
4、 4short: 2long: 4float: 4double: 8long double: 8char: 1bool: 1常量(續(xù)三)2. 符號(hào)常量:直接使用符號(hào)表示的常量值,包括宏定義和const定義的符號(hào)常量。(1)宏定義 語(yǔ)法形式:#define 宏名 字符串 如:#define PI 3.14 程序編譯前會(huì)自動(dòng)用字符串取代程序中出現(xiàn)的宏名(2)const定義 語(yǔ)法形式:const 類型說(shuō)明符 常量名=常量值; 如:const float pi = 3.14 ; 宏定義在預(yù)編譯時(shí),只做簡(jiǎn)單的替換,不做語(yǔ)法檢查 宏定義沒(méi)有數(shù)據(jù)類型,而const定義的符號(hào)常量是有數(shù)據(jù)類型的。 2.1 常量
5、與變量例2.2 使用符號(hào)常量#include void main() #define PI 3.14 const int A=10; cout PI*10*10 n; cout A + 20 n;變量程序運(yùn)行中值可以被改變的量,稱為變量。變量必須先定義再使用。2.1 常量與變量例2.3 從鍵盤輸入n的值,計(jì)算從1到n的累加和。#include void main()int n, sum=0;cin n;int i;for(i=1;i=n; i+)sum+=i;cout sum n;2.2 指針與應(yīng)用為什么我們要學(xué)習(xí)指針?什么場(chǎng)合要用指針?當(dāng)獲取變量的地址時(shí);當(dāng)函數(shù)需要返回多于1個(gè)值時(shí);當(dāng)需要將
6、一數(shù)組傳遞給函數(shù)時(shí);當(dāng)需要?jiǎng)討B(tài)的分配內(nèi)存空間時(shí);當(dāng)需要直接操作處理內(nèi)存地址時(shí);當(dāng)要表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表,樹結(jié)構(gòu),圖結(jié)構(gòu)的數(shù)據(jù)等)時(shí);指針1. 地址與指針的概念 (1)內(nèi)存地址存儲(chǔ)單元的編號(hào)即稱為地址每個(gè)存儲(chǔ)單元的大小為一個(gè)字節(jié),每個(gè)單元有一個(gè)唯一的地址。 (2)變量的地址在程序中定義的所有變量,都要分配相應(yīng)的存儲(chǔ)單元。不同類型的數(shù)據(jù)所需要的存儲(chǔ)空間的大小不同。 系統(tǒng)分配給變量的內(nèi)存空間的起始單元地址稱為該變量的地址。2.2 指針與引用指針2. 指針與指針變量(1)指針:變量的地址就是該變量的指針。(2)指針變量:用于存儲(chǔ)其它變量地址的變量。指針變量的定義: 數(shù)據(jù)類型 *指針變量名; 如:
7、 int *p1; float *p2; char *p3; 注意:指針變量所指向的變量類型不能改變指針變量必須指向具體內(nèi)存地址才能引用,如: int *p; *p=10;(3)指針運(yùn)算符(*)與取地址運(yùn)算符(&)2.2 指針與引用例2.4 通過(guò)指針變量存取變量的值#include void main() int a, *p1; double b, *p2; char c, *p3; p1 = &a; p2 = &b; p3 = &c; *p1 = 10; *p2 = 11.2; *p3 = A; cout a endl; cout b endl; cout c endl; 程序運(yùn)行結(jié)果為:1
8、011.2A例2.5 輸入a和b兩個(gè)數(shù),按從小到大的順序輸出#include void main()int a, b;int *p1, *p2, *p; cout a b;p1 = &a;p2 = &b;if( *p1 *p2 )p = p1;p1 = p2;p2 = p;cout min= *p1 endl; cout max= *p2 endl; 程序運(yùn)行結(jié)果為:請(qǐng)輸入兩個(gè)整數(shù):30 10min = 10max = 30例2.5 輸入a和b兩個(gè)數(shù),按從小到大的順序輸出(續(xù))#include void main()int a, b;int *p1, *p2; cout a b;p1 = &a
9、;p2 = &b;swap(p1, p2);cout min= *p1 endl; cout max= *p2 *p2 )p = p1;p1 = p2;p2 = p; 指針3. 指針作為函數(shù)的參數(shù) 指針作為函數(shù)的參數(shù),實(shí)際上傳遞的是變量的地址,進(jìn)行的是地址傳遞。 例2.6 指針作為函數(shù)參數(shù),被調(diào)函數(shù)中交換參數(shù)值2.2 指針與引用#include void swap(int *x, int *y);void main()int a, b;a = 10;b = 20;swap(&a, &b);cout a , b endl;void swap(int *x, int *y)int temp;tem
10、p = *x;*x = *y;*y = temp;引用引用是一種特殊的變量,可以認(rèn)為是一個(gè)變量的別名。 定義引用的一般格式:類型 &引用名 變量名; 如: int a = 1; int &b = a; 先定義變量a,并初始化,然后定義引用b并初始化為a,即b是a的別名,因此a和b是同一個(gè)單元。注意:定義引用時(shí)一定要初始化,指明該引用變量是誰(shuí)的別名。2.2 指針與引用例2.7 引用的使用#include void main()int a=1;int c=10;int &b = a;cout a , b , c endl;b = c;cout a , b , c endl;b = 20;cout
11、a , b , c endl;程序運(yùn)行結(jié)果:1,1,1010,10,1020,20,10定義引用b,并將其作為a的別名將c的值賦給b,不是將b作為c的別名例2.8 寫一個(gè)函數(shù),用引用作為參數(shù),交換函數(shù)中兩個(gè)變量的值。#include void swap(int &x, int &y);void main()int a, b;a = 10;b = 20;swap(a, b);cout a , b endl;void swap(int &x, int &y)int temp;temp = x;x = y;y = temp;程序運(yùn)行結(jié)果為:20,10引用作為函數(shù)參數(shù)函數(shù)的實(shí)參與形參在內(nèi)存中共用存儲(chǔ)單
12、元,因此形參的變化會(huì)使實(shí)參同時(shí)變化。指針與引用的區(qū)別定義引用時(shí)必須初始化,并且不能引用空值,而指針沒(méi)有這個(gè)限制在使用引用之前不需要測(cè)試它的合法性,而我們?cè)谑褂弥羔樓皯?yīng)該總是要測(cè)試它,防止其為空。指針可以被重新賦值以便指向另一個(gè)不同的對(duì)象,但引用則總是指向在初始化時(shí)被指定的對(duì)象,以后不會(huì)改變,也不可能會(huì)改變。程序什么時(shí)候給變量分配內(nèi)存空間?2.3 動(dòng)態(tài)內(nèi)存分配什么叫動(dòng)態(tài)分配?對(duì)應(yīng)的另一種是靜態(tài)分配,又是怎樣?什么情況下使用動(dòng)態(tài)內(nèi)存分配?當(dāng)需要使用數(shù)組卻不能確定數(shù)組大小時(shí);當(dāng)使用的數(shù)組特別大時(shí),因?yàn)闂?臻g時(shí)很有限的; 當(dāng)使用鏈表或隊(duì)列等數(shù)據(jù)結(jié)構(gòu)時(shí);還有,當(dāng)內(nèi)存的占用可能隨著程序運(yùn)行變化很大的時(shí)候。
13、 2.3 動(dòng)態(tài)內(nèi)存分配 在程序運(yùn)行過(guò)程中根據(jù)需要?jiǎng)討B(tài)分配存儲(chǔ)空間,不需要時(shí)還可以將空間釋放,通過(guò)new和delete運(yùn)算符實(shí)現(xiàn)。一個(gè)存儲(chǔ)空間多個(gè)連續(xù)存儲(chǔ)空間動(dòng)態(tài)分配new 類型名(初值);new 類型名整型表達(dá)式;動(dòng)態(tài)釋放delete 指針名;delete 指針名;示例int *p1, *p2;p1 = new int(10);p2 = new int;delete p1;delete p2;int *p1;p1 = new int10;delete p1; delete掉的是什么?例2.9 動(dòng)態(tài)內(nèi)存分配的使用#include void main()int *p1, *p2;p1 = new
14、int(10);p2 = new int10;int i;for(i=0; i10; i+)*(p2+i) = i;cout *p1 endl;for(i=0; i10; i+)cout *(p2+i) ;cout endl;程序運(yùn)行結(jié)果為:100 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 for(i=0; i10; i+)cout p2i “ ”; cout endl; delete p1;delete p2; p2i 與 *(p2+i)所訪問(wèn)的數(shù)據(jù)相同 程序一般是如何存儲(chǔ)、處理數(shù)據(jù)? 如何操作數(shù)據(jù)的某一個(gè)二進(jìn)制位?如何將十進(jìn)制數(shù)轉(zhuǎn)化成二進(jìn)制數(shù)? 位運(yùn)算按位與
15、(&)、按位或(|)、按位異或()、按位取反()、左移位() 為什么要學(xué)習(xí)名字空間? 名字空間2.5 名字空間1. 名字空間的定義 namespace 名字空間名 (1)名字空間只能在全局范圍(文件域)那定義,但可以嵌套。 (2)一個(gè)名字空間可以用另一個(gè)名字作為它的別名。例如使用ns1作為上述名字空間NameSpace1的別名,可以用下面的語(yǔ)法: namespace ns1 = NameSpace1;例 :namespace NameSpace1 int a; int f1( ) float f2( ) 2.5 名字空間2. 名字空間的使用 (1)使用域運(yùn)算符 “:” 格式: 名字空間名:標(biāo)識(shí)
16、符(2)使用using指令 格式: using namespace 名字空間名; using 名字空間名:標(biāo)識(shí)符;例2.11 名字空間的定義與使用#include namespace ns1 int fun(int x, int y);namespace ns2 int fun(int x, int y); namespace ns3 int fun(int x, int y); int ns1:fun(int x, int y) return x+y;int ns2:fun(int x, int y) return x*y;int ns2:ns3:fun(int x, int y) retu
17、rn x-y;void main() cout ns1:fun(3,4) endl; cout ns2:fun(3,4) endl; cout ns2:ns3:fun(3,4) endl;程序運(yùn)行結(jié)果: 7 12 -1例2.12 使用using指令#include namespace ns1int fun1(int x, int y);int fun2(int x, int y);int fun3(int x, int y);int fun1(int x, int y)return x+y;int fun2(int x, int y)return x-y;int fun3(int x, int
18、 y)return x*y;using namespace ns1;void main()cout fun1(3,4) endl;cout fun2(3,4) endl;cout fun3(3,4) endl;程序運(yùn)行結(jié)果: 7 -1 122.5.2 C+標(biāo)準(zhǔn)庫(kù) C+標(biāo)準(zhǔn)庫(kù)為所有的C+編譯器所支持,所有標(biāo)準(zhǔn)C+的庫(kù)都包含在一個(gè)單一的名字空間std中。為了使用C+的標(biāo)準(zhǔn)庫(kù),可以使用以下指令: using namespace std; 例:使用標(biāo)準(zhǔn)庫(kù)的程序 #include using namespace std; void main() cout “本例使用標(biāo)準(zhǔn)庫(kù)” endl; 注意:由于iostream和iostream.h都定義了cout,因此不能同時(shí)包含這兩個(gè)文件,否則將產(chǎn)生二義性。 #include 謝 謝!習(xí)題 (1) C/C+定義了4個(gè)內(nèi)存區(qū)間: (1) 、 (2) 、 (3) 和 (4) 。答案:(1)代碼區(qū),存放程序代碼; (2)全局變量與靜態(tài)變量區(qū),存放全局變量或?qū)ο螅òo態(tài)); (3)局部變量區(qū)即棧區(qū),存放局部變量; (4)自由存儲(chǔ)區(qū),即動(dòng)態(tài)存儲(chǔ)區(qū)或堆區(qū)。習(xí)題(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用人單位勞動(dòng)合同經(jīng)典案例
- 賺差價(jià)合同范本
- 11《爸爸媽媽在我心中》教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- 2023-2024學(xué)年粵教版(2019)高中信息技術(shù)必修一《數(shù)據(jù)與計(jì)算》第二章第二節(jié)《數(shù)字化學(xué)習(xí)與創(chuàng)新》教學(xué)設(shè)計(jì)
- 工地鉆孔合同范本
- 2025高考生物備考教學(xué)設(shè)計(jì):動(dòng)物和人體生命活動(dòng)的調(diào)節(jié)之興奮傳導(dǎo)與傳遞的相關(guān)實(shí)驗(yàn)探究教學(xué)設(shè)計(jì)
- 6《拉拉手交朋友》教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治一年級(jí)上冊(cè)統(tǒng)編版
- Module 4 短語(yǔ)句子(教學(xué)設(shè)計(jì))-2023-2024學(xué)年外研版英語(yǔ)八年級(jí)下冊(cè)
- 定制風(fēng)管銷售合同范本
- 小學(xué)生代表開學(xué)典禮演講稿
- 拉擠樹脂及其成型工藝介紹課件
- 山東省中考物理總復(fù)習(xí) 八上 第6講 質(zhì)量與密度
- 2023年南京信息職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試筆試模擬試題及答案解析
- 10KV供配電工程施工方案設(shè)計(jì)
- 商務(wù)部專員績(jī)效考核指標(biāo)量表
- (完整)PEP人教版小學(xué)生英語(yǔ)單詞四年級(jí)上冊(cè)卡片(可直接打印)
- 面神經(jīng)疾病課件
- 基本公共衛(wèi)生服務(wù)項(xiàng)目績(jī)效考核的課件
- 三年級(jí)下冊(cè)小學(xué)科學(xué)活動(dòng)手冊(cè)答案
- 班、團(tuán)、隊(duì)一體化建設(shè)實(shí)施方案
- 最全的人教初中數(shù)學(xué)常用概念、公式和定理
評(píng)論
0/150
提交評(píng)論