版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 C+基本語(yǔ)法 第1頁(yè)主要內(nèi)容13.1 數(shù)據(jù)類型 23.2 常量和變量 33.3 運(yùn)算符和表示式43.4 語(yǔ)句 53.5 小結(jié)第2頁(yè)3.1 數(shù)據(jù)類型程序中各種加工和處理都是針對(duì)一些數(shù)據(jù)進(jìn)行,這些數(shù)據(jù)由數(shù)據(jù)類型描述。數(shù)據(jù)類型要求了數(shù)據(jù)存放結(jié)構(gòu)(在內(nèi)存中占據(jù)大小和布局)、能夠進(jìn)行運(yùn)算、取值范圍。C+中數(shù)據(jù)類型大致分為三類:C+預(yù)定義一組內(nèi)置基本數(shù)據(jù)類型,表示常見(jiàn)簡(jiǎn)單數(shù)據(jù),如整數(shù)、浮點(diǎn)數(shù)等;復(fù)合類型,由基本數(shù)據(jù)類型組合而成更復(fù)雜數(shù)據(jù)類型,如數(shù)組、結(jié)構(gòu)體、聯(lián)合、枚舉等;類類型,即用戶自己定義抽象數(shù)據(jù)類型。為了方便程序員,C+標(biāo)準(zhǔn)庫(kù)中還提供一些慣用抽象數(shù)據(jù)類型。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5
2、小結(jié)數(shù)據(jù)類型1第3頁(yè)3.1.1 內(nèi)置數(shù)據(jù)類型字符類型字符型char,通慣用來(lái)表示單個(gè)字符和小整數(shù)。整數(shù)類型整型int、短整型short、長(zhǎng)整型long,分別代表不一樣長(zhǎng)度整數(shù)值char、short、int和long類型都能夠用signed和unsigned修飾浮點(diǎn)類型浮點(diǎn)型float、雙精度浮點(diǎn)型double和長(zhǎng)雙精度long double布爾類型bool類型只有兩個(gè)值:true和false。-bool類型、char類型、各種整數(shù)類型通稱為整值類型。整值類型和浮點(diǎn)類型一起被稱為算術(shù)類型。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚
3、舉 類類型第4頁(yè)內(nèi)置數(shù)據(jù)類型空間大小 標(biāo)準(zhǔn)C+對(duì)內(nèi)置數(shù)據(jù)類型空間大小并沒(méi)有做出嚴(yán)格要求, 但為了編寫(xiě)可移植代碼,應(yīng)該了解你所使用編譯器和機(jī)器,防止對(duì)這些特征做出某種假定。 以下代碼能夠測(cè)試C+編譯器為每種數(shù)據(jù)類型分配空間大小: 2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型#include using namespace std;int main( )cout sizeof(char) endl; cout sizeof(int) endl;cout sizeof(float) endl;cout sizeof(doubl
4、e) endl;cout sizeof(bool) endl; return 0;Visual C+ 6.0和DEV-C+結(jié)果:14481第5頁(yè)3.1.2 指針類型 指針持有一個(gè)對(duì)象地址,經(jīng)過(guò)指針能夠間接操作這個(gè)對(duì)象。指針經(jīng)典使用方法:構(gòu)建鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),如鏈表和樹(shù)管理程序執(zhí)行時(shí)動(dòng)態(tài)分配對(duì)象作為函數(shù)參數(shù)每個(gè)指針都有相關(guān)類型,需要在定義指針時(shí)指出。不一樣類型指針表示方法和保留地址值并沒(méi)有分別,區(qū)分只是在于指針指向?qū)ο箢愋筒灰粯?。指針類型指出了怎樣解釋該?nèi)存地址保留內(nèi)容,以及該內(nèi)存區(qū)域應(yīng)該有多大。比如: int *pi; /指向整型指針,如指向內(nèi)存地址是1000,則跨越地址空間是10001003 c
5、har *pc;/指向字符型指針,如指向內(nèi)存地址是1000,則只占據(jù)1000這個(gè)字節(jié)區(qū)域2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第6頁(yè)空指針指針值為0時(shí)表示它不指向任何對(duì)象,即空指針。指針不能保留非地址值,也不能被賦值或初始化為不一樣類型地址值。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型int ival = 100;int *pi = &ival; / pi 被初始化為ival地址int *pi2 = 0; /pi2不指向任何對(duì)象pi2 =
6、ival;/編譯錯(cuò)誤double dval = 1.5;pi = &dval;/編譯錯(cuò)誤第7頁(yè)通用指針C+提供了一個(gè)通用指針,即void*指針,它能夠持有任何類型地址值。不能操縱void指針指向?qū)ο?,只能傳送該地址值或和其它地址進(jìn)行比較。C+也不允許void指針到其它類型指針直接賦值。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型int a = 10;char ch = k;void* pv = &a;/OKpv = &ch;/OKint* pi = pv;/錯(cuò)誤,應(yīng)該使用pi = (int*) pv經(jīng)過(guò)解引用操作(*)能
7、夠間接訪問(wèn)指針指向?qū)ο蟆nt x = 100, y = 20;int *pi = &x;*pi = y;/ x = y第8頁(yè)指針?biāo)阈g(shù)運(yùn)算指針能夠進(jìn)行加或減整數(shù)值算術(shù)運(yùn)算,這時(shí)地址值增加數(shù)目取決于指針類型。指針只有在指向數(shù)組元素時(shí),其算術(shù)運(yùn)算才有意義。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型int a = 10;char ch = k;int* pi = &a;char* pc = &ch;pi+; /在原地址值上加4;因?yàn)閕nt占4個(gè)字節(jié)pc+; /在原地址值上加1;因?yàn)閏har占1個(gè)字節(jié)第9頁(yè)3.1.3 引用類型
8、引用又稱為別名,它能夠作為對(duì)象另一個(gè)名字。經(jīng)過(guò)引用我們能夠間接操縱對(duì)象,使用方式類似于指針,不過(guò)不需要指針語(yǔ)法。在程序中,引用主要用作函數(shù)形參。引用由類型標(biāo)識(shí)符和一個(gè)取地址符(&)來(lái)定義,引用必須被初始化。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型int ival = 100;/OK,refVal是指向ival引用int &refVal = ival; /Error,引用沒(méi)有初始化int &refVal2; /Error,不能用對(duì)象地址來(lái)初始化引用int &refVal3 = &ival; int &refVal4 =
9、 10; /Error,不能用沒(méi)有內(nèi)存地址數(shù)值來(lái)初始化引用第10頁(yè)引用注意事項(xiàng)(1)引用一旦定義,就不能再指向其它對(duì)象,對(duì)引用全部操作都會(huì)被應(yīng)用在它所指向?qū)ο笊?。比如?int x = 100, y = 20; int &r = x;/ r是x引用 r = y;/r不是y引用,而是x = y2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第11頁(yè)引用注意事項(xiàng)(2)注意引用初始化和賦值極為不一樣:初始化時(shí)引用“指向”一個(gè)對(duì)象,賦值時(shí),引用被作為所指對(duì)象別名。雖然C+標(biāo)準(zhǔn)沒(méi)有要求引用實(shí)現(xiàn)方式,不過(guò)在很多C+編譯器中,引用被實(shí)現(xiàn)為
10、與所指對(duì)象占據(jù)同一地址空間,比如下面代碼:#include using namespace std;int main() int a = 10; int& ra = a; couta=at&a=&aendl; coutra=rat&ra=&raendl; ra = 20; couta=at&a=&aendl; coutra=rat&ra=&raendl;在GNU C+編譯環(huán)境輸出結(jié)果以下: a=10&a=0 x22ff34ra=10&ra=0 x22ff34a=20&a=0 x22ff34ra=20&ra=0 x22ff342常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針
11、類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第12頁(yè)引用與指針差異(1)定義與初始化指針定義形式:類型 *指針變量;指針初始化:int x = 10, y = 20;int *pi; /能夠不初始化pi = &x; /p 指向int 類型對(duì)象xpi = &y; /p 也能夠重新指向y引用定義形式:類型 &引用名 = 初始值;引用初始化:定義引用時(shí)必須用有內(nèi)存地址對(duì)象初始化。引用在初始化之后,一直指向該對(duì)象。比如:int a = 10, b=20;int &ri = a; /必須初始化ri = b; /等同于a=b;2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型
12、引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第13頁(yè)引用與指針差異(2)使用方式指針經(jīng)過(guò)解引用(*)運(yùn)算間接訪問(wèn)指向?qū)ο螅灰米鳛閷?duì)象別名,能夠直接訪問(wèn)對(duì)象。比如:pi = &x;*pi = 30; / x=30int &ri = a;ri = 40; /a=402常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第14頁(yè)引用與指針差異(3)指針能夠不指向任何對(duì)象,引用必須指向一個(gè)對(duì)象。pi = 0; /pi是空指針,不指向任何對(duì)象ri = 0; / a=02常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型
13、 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第15頁(yè)引用與指針差異(4)指針之間相互賦值會(huì)改變指向關(guān)系;引用之間相互賦值是它們指向?qū)ο笾g賦值,引用關(guān)系本身并不改變。int x = 100, y = 20;int *p1 = &x, *p2 = &y;p1 = p2; / p1=&y, p1 和p2 都指向yint &r1 = x, &r2 = y;r1 = r2; / x y, r1 仍是x 引用2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第16頁(yè)3.1.4 數(shù)組數(shù)組是一個(gè)單一數(shù)據(jù)類型對(duì)象集合。其中單個(gè)對(duì)象沒(méi)有命名,但
14、能夠經(jīng)過(guò)它在數(shù)組中位置進(jìn)行訪問(wèn),即下標(biāo)訪問(wèn)。比如: /ia是包含10個(gè)int對(duì)象數(shù)組 int ia10; /數(shù)組中下標(biāo)為3元素被賦值為7 ia3 = 7; 2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第17頁(yè)定義數(shù)組定義數(shù)組時(shí)需要指定類型名、數(shù)組名標(biāo)識(shí)符和數(shù)組大小。數(shù)組大小是一個(gè)大于1常量表示式。數(shù)組元素下標(biāo)從0開(kāi)始,到數(shù)組大小1。不過(guò),C+并不提供對(duì)數(shù)組下標(biāo)范圍檢驗(yàn),需要程序員自己確保正確性。定義數(shù)組同時(shí)能夠?qū)?shù)組進(jìn)行初始化,初始值放在花括號(hào)中,用逗號(hào)隔開(kāi)。 int ia3 = 1, 2, 3; int ib = 4,
15、 5, 6, 7; int ic10 = 0, 1, 2;2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第18頁(yè)數(shù)組注意事項(xiàng)一個(gè)數(shù)組不能被另一個(gè)數(shù)組初始化,也不能被直接賦值給另一數(shù)組。C+也不允許申明一個(gè)引用數(shù)組,比如: int ia3=1,2,3; int ib=ia; /!Error int &ria=ia; /!Error int ival1=0,ival2=1; int &r2=a,b; /!Error int &rv1=ival1,&rv2=ival2; int rv2=rv1,rv2; /OK2常量和變量3運(yùn)算
16、符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第19頁(yè)C格調(diào)字符串C+保留了C語(yǔ)言中用字符數(shù)組表示字符串方式,稱為C格調(diào)字符串。能夠經(jīng)過(guò)庫(kù)函數(shù)對(duì)這么字符串進(jìn)行操作。需要包含標(biāo)準(zhǔn)庫(kù)頭文件2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第20頁(yè)多維數(shù)組定義多維數(shù)組,每一維大小由一對(duì)方括號(hào)指定。比如: int ia43; 訪問(wèn)多維數(shù)組元素要指定每一維下標(biāo)。比如: ia12 = 5;多維數(shù)組也能夠被初始化: int ia32 = 0, 1, 2, 3, 4, 5 ;2常量和變量3
17、運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第21頁(yè)數(shù)組與指針數(shù)組名字代表數(shù)組第一個(gè)元素地址,它類型是數(shù)組元素類型指針。比如對(duì)下面數(shù)組定義: int ia5;ia是一個(gè)int*類型, ia和&ia0都表示第一個(gè)元素地址。因而,除了使用下標(biāo)訪問(wèn)數(shù)組元素之外,還能夠使用指針對(duì)數(shù)組進(jìn)行訪問(wèn)。 int main() int a10; int i; int *p; for(i = 0; i 10; i+) ai = i; for(p = a; p a+10; p+) cout”運(yùn)算符選擇。定義結(jié)構(gòu)體類型之后,能夠創(chuàng)建該類型許多實(shí)例。比如:2常量
18、和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型struct X char c;int i;float f;double d;X s1, s2;X* ps = &s1;s1.c = a;s1.i = 1;s1.f = 3.5;s1.d = 0.7s2.c = ps-c;第23頁(yè)結(jié)構(gòu)體變量?jī)?nèi)存中大?。?)結(jié)構(gòu)體變量組員在內(nèi)存中依次存放,因而,標(biāo)準(zhǔn)上,結(jié)構(gòu)體變量在內(nèi)存中大小是其全部組員大小之和。不過(guò),為了提升訪問(wèn)效率,大多數(shù)編譯器實(shí)際上都使用了邊界對(duì)齊技術(shù)。 struct Y char c; int i; ; Y st; 上面變量st
19、在內(nèi)存中占據(jù)幾個(gè)字節(jié)呢?是5嗎? 2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第24頁(yè)結(jié)構(gòu)體變量?jī)?nèi)存中大?。?)內(nèi)存地址1000開(kāi)始一個(gè)機(jī)器字內(nèi)存地址1004開(kāi)始一個(gè)機(jī)器字內(nèi)存地址1008開(kāi)始 st.c占一個(gè)字節(jié)st.i占一個(gè)完整機(jī)器字為了邊界對(duì)齊而空出來(lái)3個(gè)字節(jié)st占8個(gè)字節(jié)2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型在GCC編譯器下,sizeof(Y)結(jié)果是8。第25頁(yè)3.1.6 聯(lián)合(共用體)union和struct語(yǔ)法類似,只是數(shù)據(jù)組員存放
20、方式不一樣。union每個(gè)組員都是從聯(lián)合變量首地址開(kāi)始存放,所以每次只能使用一個(gè)組員。使用union能夠節(jié)約空間,不過(guò)輕易犯錯(cuò)。 union Packed char c; int i; float f; double d; ; /聯(lián)合大小是其中double大小 /因?yàn)閐ouble是占據(jù)空間最大元素 Packed x; x.c = a;/其余組員現(xiàn)在不可使用 x.d = 3.14;/覆蓋了組員c內(nèi)容2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第26頁(yè)聯(lián)合內(nèi)存布局2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類
21、型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型x.dx首地址x.cx.fx.i第27頁(yè)3.1.7 枚舉枚舉定義了一組命名整數(shù)常量,從而提升代碼可讀性。比如: enum ShapeType circle, square, rectangle ;ShapeType枚舉類型定義了3個(gè)常量:0,1,2 分別和名字circle,square以及rectangle關(guān)聯(lián)。ShapeType是一個(gè)枚舉類型,能夠用它來(lái)定義枚舉變量,變量值只能是枚舉組員。也能夠自己指定枚舉組員值: enum ShapeTypecircle10, square20, rectangle;未指定值枚舉組員,編譯器會(huì)賦給它相
22、鄰下一個(gè)整數(shù)值,所以rectangle組員值是21。枚舉類型在必要時(shí),如參加算術(shù)運(yùn)算,會(huì)被自動(dòng)提升為算術(shù)類型。枚舉組員名字是不可打印,輸出是它所表示整數(shù)值。另外,不能使用枚舉組員進(jìn)行迭代,C+不支持枚舉組員之間前后移動(dòng)。2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第28頁(yè)3.1.8 類類型除了內(nèi)置類型和復(fù)合類型之外,C+還允許用戶自己定義類類型,而且在標(biāo)準(zhǔn)庫(kù)中預(yù)定義了一些慣用類型。這里先簡(jiǎn)單介紹幾個(gè)慣用標(biāo)準(zhǔn)類型。 輸入輸出流iostream 字符串類 標(biāo)準(zhǔn)數(shù)組向量類 2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)
23、置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第29頁(yè)輸入輸出流iostream輸入輸出操作是由iostream類提供,使用iostream需包含標(biāo)準(zhǔn)庫(kù)頭文件: #include iostream庫(kù)中有兩個(gè)預(yù)定義對(duì)象:cin,istream類型對(duì)象,用于從用戶終端讀入數(shù)據(jù)。cin慣用方式為:cin 變量名; cin 變量名1 變量名2; cin 變量名1 變量名2 變量名n;cout,ostream類型對(duì)象,用于向用戶終端寫(xiě)數(shù)據(jù)。cout 慣用方式為:cout 表示式; cout 表示式 endl; cout 表示式1 表示式2 表示式n; 2常量和變量3運(yùn)算符和表示式4語(yǔ)句
24、5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第30頁(yè)輸入輸出流iostream#include using namespace std;int main()int ival;float fval;cin ival;cin fval;cout ival n;cout fval ival fval;cout ival n fval endl;2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第31頁(yè)字符串類string除了保留C格調(diào)字符串char*之外,C+標(biāo)準(zhǔn)庫(kù)還定義了字符串類string
25、。string類支持字符串對(duì)象各種初始化方式,支持字符串之間拷貝、比較和連接等操作,還支持對(duì)字符串長(zhǎng)度查詢和是否為空判斷,而且也能夠訪問(wèn)字符串中單個(gè)字符。使用string類,需要包含對(duì)應(yīng)頭文件:string。#include 2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第32頁(yè)字符串類string#include #include using namespace std;int main() string s1, s2;/創(chuàng)建兩個(gè)空字符串對(duì)象 string s3 = Hello, World!; /初始化s3 strin
26、g s4(I am ); s2 = “Today”;/賦值 s1 = s3 + + s4; /字符串連接 s1 += 5 ;/末尾追加 cout s1 + s2 + ! endl; /輸出字符串內(nèi)容 cout Length of s1 is : s1.size() endl; /輸出字符串長(zhǎng)度 for (int i = 0; I s1.size(); +i) cout s1i ; /逐一輸出s1中字符2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第33頁(yè)字符串類string字符串比較使用運(yùn)算符“=”取得字符串長(zhǎng)度使用siz
27、e()判斷字符串是否為空使用empty()能夠?qū)⒁粋€(gè)C格調(diào)字符串賦給string對(duì)象,但反之不可。要將string對(duì)象轉(zhuǎn)換為C格調(diào)字符串,使用c_str()操作,其返回結(jié)果為const char*,即轉(zhuǎn)換得到C格調(diào)字符串首地址。比如:string s1 = “This is a book.”;int x = strlen(s1);/Errorx = strlen(s1.c_str();/OK2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第34頁(yè)標(biāo)準(zhǔn)數(shù)組向量類C+標(biāo)準(zhǔn)庫(kù)中vector類為內(nèi)置數(shù)組類提供了一個(gè)替換表示。為了使用
28、vector,我們必須包含相關(guān)頭文件:vector。vector能夠像數(shù)組一樣使用,還能夠以STL方式使用。/數(shù)組習(xí)慣#include using namespace std;int main() vector iv(10); int ia10; for(int id = 0; id10; id+) iaid = ivid; /2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第35頁(yè)向量類:STL使用習(xí)慣/STL習(xí)慣#include #include using namespace std;int main() vector
29、 iv; for(int id = 0; id10; id+) iv.push_back(id); for(int id = 0; idiv.size(); id+) coutivid; /2常量和變量3運(yùn)算符和表示式4語(yǔ)句5小結(jié)數(shù)據(jù)類型1 內(nèi)置數(shù)據(jù)類型 指針類型 引用類型 數(shù)組 結(jié)構(gòu)體 聯(lián)合 枚舉 類類型第36頁(yè)3.2.1 內(nèi)置數(shù)據(jù)類型文字常量 當(dāng)一個(gè)數(shù)值,比如5,出現(xiàn)在程序中時(shí),它被稱為文字常量(literal constant)。“文字”是因?yàn)橹荒芤运敌问街复??!俺A俊笔且驗(yàn)樗挡荒鼙桓淖?。文字常量是不可尋址。每個(gè)文字常量都有對(duì)應(yīng)類型,其類型由其形式、取值和后綴決定。3運(yùn)算符和表示式
30、4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第37頁(yè)整數(shù)文字常量 整數(shù)文字常量能夠表示為十進(jìn)制、八進(jìn)制或十六進(jìn)制形式。比如23能夠?qū)懗桑?23 /十進(jìn)制 027 /八進(jìn)制 0 x17 /十六進(jìn)制十進(jìn)制整數(shù)文字常量默認(rèn)類型是int,假如數(shù)值超出int能夠表示范圍,那么其類型是long。八進(jìn)制和十六進(jìn)制整數(shù)文字常量類型是int、unsigned int、long、unsigned long中第一個(gè)范圍足夠表示該數(shù)值類型。能夠在文字常量后面加“L”或“l(fā)”后綴將其指定為long類型。能夠加“U”或“u”將其指定為無(wú)符號(hào)數(shù)。如:116u 120U
31、L 2L3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第38頁(yè)浮點(diǎn)型文字常量浮點(diǎn)型文字常量能夠?qū)懗善胀ㄊM(jìn)制形式或科學(xué)計(jì)數(shù)法形式。比如浮點(diǎn)數(shù)235.8能夠表示為:235.8 2.358E2 浮點(diǎn)型文字常量默認(rèn)為double類型,也能夠加后綴改變其類型。float類型浮點(diǎn)文字常量能夠在后面加“F”或“f”標(biāo)示,后綴“L”或“l(fā)”則為long double類型。 3.14F 1.24f 2.5E3L3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第39頁(yè)布爾型文
32、字常量bool型文字常量只有true和false。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第40頁(yè)字符型文字常量字符型文字常量是用單引號(hào)括起來(lái)單個(gè)字符或以斜線開(kāi)頭轉(zhuǎn)義字符,如a,n。一些慣用轉(zhuǎn)義字符如: 轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義n換行符r回車鍵b退格鍵a響鈴符t水平制表鍵v垂直制表鍵反斜杠鍵?問(wèn)號(hào)鍵單引號(hào)鍵雙引號(hào)鍵ooo八進(jìn)制數(shù)ooohhh十六進(jìn)制數(shù)hhh3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第41頁(yè)字符串文字常量在程序中經(jīng)常出現(xiàn)還有用雙引號(hào)
33、括起來(lái)字符序列,即字符串文字常量,比如hello world,其默認(rèn)類型是const char*。 3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第42頁(yè)3.2.2 變量和標(biāo)識(shí)符變量變量為我們提供了一個(gè)有名字存放區(qū),能夠經(jīng)過(guò)代碼對(duì)其進(jìn)行讀、寫(xiě)處理。變量有時(shí)也被稱為對(duì)象。每個(gè)變量都有特定數(shù)據(jù)類型,這個(gè)類型決定了相關(guān)內(nèi)存大小、布局、能夠存放在該存放區(qū)值范圍以及能夠應(yīng)用在其上操作。比如: int count; double salary; 3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞
34、 volatile限定詞第43頁(yè)3.2.2 變量和標(biāo)識(shí)符標(biāo)識(shí)符引用變量要經(jīng)過(guò)其名字,而變量由標(biāo)識(shí)符命名。標(biāo)識(shí)符能夠由字母、數(shù)字以及下劃線組成,但必須由字母或下劃線開(kāi)頭,而且區(qū)分大小寫(xiě)字母。上面代碼中count和salary都是標(biāo)識(shí)符。C+保留了一些詞用作關(guān)鍵字,關(guān)鍵字不能作為程序標(biāo)識(shí)符使用。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第44頁(yè)C+關(guān)鍵字asmautoboolbreakcasecatchcharclassconstconst_castcontinuedefaultdeletedodoubledynamic_c
35、astelseenumexplicitexportexternfalsefloatforfriendgotoifinlineintlongmutablenamespacenewoperatorprivateprotectedpublicregisterreinterpret_castreturnshortsignedsizeofstaticstatic_caststructswitchtemplatethisthrowtruetrytypedeftypeidtypenameunionunsignedusingvirtualvoidvolatilewchar_twhile第45頁(yè)變量命名規(guī)則(1
36、)變量名字要完全、準(zhǔn)確地描述出該變量所代表事物。變量名不能過(guò)短太短名字無(wú)法傳達(dá)足夠信息,也不能過(guò)長(zhǎng)太長(zhǎng)名字極難寫(xiě)且不實(shí)用。研究表明,變量名最正確長(zhǎng)度是9到15個(gè)字符。使用i、j、k這些名字作為循環(huán)變量是約定俗成,但不要在其它場(chǎng)所使用。給布爾變量賦予隱含“真/假”含義名字,如done,error,found,success或ok等。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第46頁(yè)變量命名規(guī)則(2)常量、typedef和預(yù)處理宏全部大寫(xiě);類和其它類型名字混合大小寫(xiě);變量名和函數(shù)名中第一個(gè)單詞小寫(xiě),后續(xù)每個(gè)單詞首字母大寫(xiě),如
37、variableOrRoutineName。除了在特定前綴中,不要用下劃線作為名字中分隔符,如student_name,用studentName更加好。應(yīng)該防止使用這些名字:令人誤解名字或縮寫(xiě),含有相同含義名字,帶有數(shù)字名字,拼寫(xiě)錯(cuò)誤單詞,僅靠大小寫(xiě)區(qū)分名字,混用各種自然語(yǔ)言(如漢語(yǔ)拼音和英語(yǔ)),標(biāo)準(zhǔn)類型和函數(shù)名字。防止在名字中包含易混同字符:比如,數(shù)字一(1)、小寫(xiě)字母L(l)和大寫(xiě)字母i(I),數(shù)字0和大小寫(xiě)字母O(o),數(shù)字2和字母z。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第47頁(yè)變量右值和左值變量和文字常量區(qū)
38、分在于變量是可尋址,對(duì)于每個(gè)變量,都有兩個(gè)值與之關(guān)聯(lián):它數(shù)據(jù)值,存放在某個(gè)內(nèi)存地址中。有時(shí)也被稱為右值。文字常量和變量都能夠被用作右值。它地址值,即存放數(shù)據(jù)值那塊內(nèi)存地址。有時(shí)被稱為變量左值。在下面賦值表示式中: count = count + 5變量count同時(shí)出現(xiàn)在賦值操作左邊和右邊。右邊變量被讀取,讀出其關(guān)聯(lián)內(nèi)存中數(shù)據(jù)值。而左邊count用作寫(xiě)入,原來(lái)值會(huì)被加法操作結(jié)果覆蓋。在這個(gè)表示式賦值號(hào)右邊,count和“5”用作右值,而左邊count用作左值。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第48頁(yè)變量定義與申
39、明定義變量變量定義會(huì)引發(fā)相關(guān)內(nèi)存分配,因?yàn)橐粋€(gè)變量只能在內(nèi)存中占據(jù)一個(gè)位置,所以程序中每個(gè)變量只能定義一次。變量定義普通格式為: 類型 名字;也能夠一次定義多個(gè)同類型變量,以下: 類型 名字1,名字2;比如:int ival;ival=5; /定義ival后就能夠使用ivalint a, b, c; /定義三個(gè)int變量a,b,c3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第49頁(yè)變量定義與申明申明變量假如在一個(gè)文件中定義了一個(gè)變量,其它文件還想使用這個(gè)變量,就必須申明該變量。變量申明(declaration)作用是使程序
40、知道該變量類型和名字。申明不會(huì)引發(fā)內(nèi)存分配,程序中能夠包含對(duì)同一變量多個(gè)申明。申明全局變量格式:extern 類型 變量名;3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第50頁(yè)變量定義與申明申明變量/module0.cppint k=2; /定義變量k/module1.cpp#include /申明變量k/說(shuō)明了在module1.cpp之外某處有k定義extern int k; int main() int t=3; /定義變量t,同時(shí)也是申明 k = t+2;/使用變量k3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2
41、 文字常量 變量和標(biāo)識(shí)符 const限定詞 volatile限定詞第51頁(yè)變量初始化定義變量同時(shí)可認(rèn)為變量提供初始值,否則對(duì)于全局變量,系統(tǒng)會(huì)自動(dòng)提供初始值0 ,而局部變量是未初始化。因?yàn)橐梦闯跏蓟兞渴浅绦蛑谐R?jiàn)錯(cuò)誤,且不易被發(fā)現(xiàn),所以建議為每個(gè)定義變量提供一個(gè)初始值。C+支持兩種形式初始化:使用賦值操作符顯式語(yǔ)法形式(也叫賦值初始化): int value = 1024 ; char ch = t;將初始值放在括號(hào)中隱式形式(也叫直接初始化): int value (1024); char ch(t);3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const
42、限定詞 volatile限定詞第52頁(yè)3.2.3 const限定詞 3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 volatile限定詞由const限定對(duì)象不可改變。const在C+中使用方法非常多,主要有:限定一個(gè)對(duì)象(變量)限定指針限定引用類組員函數(shù)參數(shù)&返回值 第53頁(yè)限定一個(gè)對(duì)象3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞程序中經(jīng)常會(huì)使用一些常數(shù)值,如數(shù)組大小??墒浅绦虼a中假如充滿著這些數(shù)值,會(huì)降低程序可讀性和可維護(hù)性。C語(yǔ)言中我們
43、使用預(yù)處理指令#define定義符號(hào)常量,不過(guò)這種常量缺點(diǎn)在于它只是作簡(jiǎn)單字符串替換,沒(méi)有類型檢驗(yàn)。C+中引入了const限定符,它將一個(gè)對(duì)象限定為常量。如: const int bufSize = 1024;企圖修改這個(gè)值會(huì)造成編譯錯(cuò)誤。因?yàn)槌A吭诙x后不能修改,所以必須進(jìn)行初始化。 第54頁(yè)限定指針首先回顧一下指針:#include using namespace std;int main( ) int ival=1024; int *pi=&ival; cout sizeof(pi): sizeof(pi) endl; cout sizeof(ival): sizeof(ival) en
44、dl; cout &pi: &pi endl; cout pi: pi endl; cout &ival: &ival endl; cout *pi: *pi endl; cout ival: ival endl; 3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞DEV-C+結(jié)果以下:sizeof(pi):4sizeof(ival):4&pi:0 x22ff70pi:0 x22ff74&ival:0 x22ff74*pi:1024ival:1024第55頁(yè)限定指針從程序結(jié)果能夠看出:指針在內(nèi)存中
45、占4個(gè)字節(jié),首地址是0 x22ff70,其中存放是它所指向內(nèi)容首地址,int型變量ival在內(nèi)存中占4個(gè)字節(jié),首地址是0 x2274,這塊內(nèi)存存放是ival值1024。22ff70H22ff74H22ff741024指針pi所在內(nèi)存,放是ival首地址變量ival所在內(nèi)存,放是ival值3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第56頁(yè)問(wèn)題:在這個(gè)例子中,假如我們不允許修改ival值(即1024),怎么辦呢?顯然能夠?qū)val定義成常量: const int ival = 1024;那么能
46、否經(jīng)過(guò)間接方式修改一個(gè)常量呢?比如: const int ival = 1024; int *pi = &ival; *pi = 500; /能夠修改嗎?指向常量指針(1)3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第57頁(yè)這段代碼會(huì)造成編譯錯(cuò)誤, 理由并不是試圖經(jīng)過(guò)指針間接修改const,而是“試圖將一個(gè)const地址賦值給一個(gè)非const指針”。要保留ival地址,只能將pi定義成一個(gè)指向const int 指針,成為指向常量指針: const int ival = 1024; cons
47、t int *pi = &ival;/OK /或:int const *pi = &ival; /OK *pi = 500; /Error指向常量指針(2)3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第58頁(yè)在上面代碼中,pi是一個(gè)指向常量指針,它所指向內(nèi)存中內(nèi)容不能夠改變。 指向常量指針(3)22ff70H22ff74H22ff741024const int *piconst int ivalpi指向內(nèi)存中內(nèi)容(即1024)不能變3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量
48、 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第59頁(yè)指向常量指針(4)注意:pi是一個(gè)指向常量指針,但pi本身值能夠改變,指向另一個(gè)const int。比如:#include using namespace std;int main(int argc, char *argv ) const int ival = 1024; const int *pi = &ival; /pi首先指向const int ival cout &pi: &pi endl; cout pi: pi endl; cout &ival: &ival endl; const in
49、t ival1 = 100; pi = &ival1; /pi再指向ival1 cout &pi: &pi endl; cout pi: pi endl; cout &ival1: &ival1 endl;3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞運(yùn)行結(jié)果:&pi:0 x22ff70pi:0 x22ff74&ival:0 x22ff74&pi:0 x22ff70pi:0 x22ff6c&ival:0 x22ff6c第60頁(yè)指向常量指針(6)22ff70H22ff74H22ff6c1024c
50、onst int *piconst int ivalpi指向ival1;pi所在內(nèi)存中值發(fā)生改變,變成了ival1地址22ff6cHconst int ival11003運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞程序運(yùn)行中指針改變情況:第61頁(yè)指向常量指針(7)C+允許將一個(gè)非const地址賦值給const指針,比如:int ival=1024;const int *pi=&ival;/OK,ival沒(méi)有被限定為const,能夠改變ival=500; /!Error,經(jīng)過(guò)pi來(lái)改變ival不
51、能夠,因?yàn)閜i是const int*pi=500; 3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第62頁(yè)我們也能夠定義指向非const 對(duì)象指針常量,該指針?biāo)趦?nèi)存值不允許改變即該指針一旦用某個(gè)單元地址值初始化,那么指針值就不能再改變,但它所指向單元值能夠改變,語(yǔ)法以下:int ival = 1024;int* const pi = &ival; / const限定pi,即pi是一個(gè)常量,它指向而且一直指向ival/不過(guò)*pi能夠改變,因?yàn)閜i指向是一個(gè)int而不是const int*pi
52、= 500; /OKint ival1 = 100;pi = &ival1; /!Error不能改變pi值指向非const對(duì)象const指針(1) 3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第63頁(yè)指向非const對(duì)象const指針(2) 22ff70H22ff74H22ff741024int * const piint ivalpi所在內(nèi)存中值不能改變(即22ff74不能變)pi指向內(nèi)存中內(nèi)容(即1024)能夠變3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符
53、const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第64頁(yè)指向const對(duì)象const指針 const int ival = 5;const int* const pi = &ival; /pi是一個(gè)指向const對(duì)象const指針在pi定義中:第一個(gè)const限定int,表示指針指向單元是常量;第二個(gè)const限定pi,表示指針值也是一個(gè)常量。所以該指針?biāo)趦?nèi)存值不允許改變,它所指向內(nèi)存值也不能改變。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第65頁(yè)限定引用cons
54、t也能夠限定引用,const引用能夠用不可尋址值初始化,如:int& ri = 10;/Error,10是文字常量,不可尋址const int& rc = 10; /OK/編譯器生成一個(gè)值為10暫時(shí)對(duì)象,rc指向這個(gè)對(duì)象除了限定對(duì)象、引用和指針,const另一個(gè)用途是限定函數(shù)形式參數(shù),由const限定參數(shù)在函數(shù)體中不能被修改。3運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 const 限定詞 限定對(duì)象 限定指針 限定引用 volatile限定詞第66頁(yè)3.2.3 volatile限定詞 3運(yùn)算符和表示式4運(yùn)算5小結(jié)1數(shù)據(jù)類型常量和變量2 文字常量 變量和標(biāo)識(shí)符 co
55、nst 限定詞 volatile限定詞const和volatile一起被稱為CV限定詞,volatile使用語(yǔ)法和const相同。當(dāng)一個(gè)對(duì)象值可能在編譯器控制或檢測(cè)之外被改變時(shí),那么該對(duì)象應(yīng)該申明為volatile,比如一個(gè)被系統(tǒng)時(shí)鐘更新對(duì)象。編譯器執(zhí)行一些例行優(yōu)化行為不能應(yīng)用在volatile對(duì)象上。volatile普通用在多線程或中止處理程序設(shè)計(jì)中。第67頁(yè)3.3 運(yùn)算符和表示式4語(yǔ)句5小結(jié)1數(shù)據(jù)類型2常量和變量運(yùn)算符和表示式3操作數(shù)和應(yīng)用在這些操作數(shù)上運(yùn)算符組成了表示式。表示式指定了一個(gè)計(jì)算,會(huì)產(chǎn)生一個(gè)結(jié)果,即表示式值。當(dāng)一個(gè)表示式中包含兩個(gè)或兩個(gè)以上運(yùn)算符時(shí),它被稱為復(fù)合表示式。復(fù)合表
56、示式計(jì)算次序由運(yùn)算符優(yōu)先級(jí)和結(jié)合性決定。C+語(yǔ)言提供了豐富運(yùn)算符,依據(jù)操作數(shù)個(gè)數(shù),能夠分為一元運(yùn)算符、二元運(yùn)算符,C+中還有一個(gè)三元運(yùn)算符。也能夠依據(jù)運(yùn)算符特點(diǎn)進(jìn)行分類,比如算術(shù)運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符等。全部運(yùn)算符都會(huì)從操作數(shù)中產(chǎn)生一個(gè)值,大多數(shù)運(yùn)算符都不會(huì)改變操作數(shù),不過(guò)有運(yùn)算符會(huì)修改操作數(shù)值,這稱為運(yùn)算符副作用。 第68頁(yè)3.3.1 算術(shù)運(yùn)算符算術(shù)運(yùn)算符包含: *、/、%、+、注意: “/”和“%”運(yùn)算右操作數(shù)不能為0。兩個(gè)整數(shù)“/”運(yùn)算結(jié)果還是整數(shù),即整除?!?”運(yùn)算符只能應(yīng)用于整值類型操作數(shù),兩個(gè)非負(fù)整數(shù)進(jìn)行“%”運(yùn)算,余數(shù)為非負(fù)值,不然余數(shù)符號(hào)取決于實(shí)現(xiàn)?!?”和“”也能夠作用
57、于指針類型變量。指針加法普通形式是: pointer + number;指針減法除了能夠像上面加法形式之外,還能夠進(jìn)行兩個(gè)指針減法,普通要求這兩個(gè)指針指向同一數(shù)組元素,其結(jié)果是它們指向數(shù)組元素下標(biāo)之差。4語(yǔ)句5小結(jié)1數(shù)據(jù)類型2常量和變量運(yùn)算符和表示式3 算術(shù)運(yùn)算符 關(guān)系/邏輯運(yùn)算符 賦值運(yùn)算符 自增和自減 位運(yùn)算符 sizeof 運(yùn)算符 new和delete 條件運(yùn)算符 逗號(hào)運(yùn)算符 運(yùn)算符優(yōu)先級(jí) 類型轉(zhuǎn)換第69頁(yè)例 :韓信點(diǎn)兵不足百人,三人一行多一個(gè),七人一行少兩個(gè),五人一行恰好,問(wèn)有多少人。例 :韓信點(diǎn)兵不足百人,三人一行多一個(gè),七人一行少兩個(gè),五人一行恰好,問(wèn)有多少人。第70頁(yè)3.3.2
58、關(guān)系和邏輯運(yùn)算符關(guān)系運(yùn)算符有:,=,= =,!=邏輯運(yùn)算符有:!,&,|。邏輯運(yùn)算和關(guān)系運(yùn)算計(jì)算結(jié)果是bool類型,即true或false。在需要整值類型環(huán)境中,它們結(jié)果會(huì)被自動(dòng)提升為1(true)或者0(false)。邏輯與和邏輯或運(yùn)算計(jì)算次序是從左至右,只要能夠得到表示式值,運(yùn)算就會(huì)結(jié)束,這種現(xiàn)象被稱為邏輯運(yùn)算短路。即,對(duì)于表示式expr1 &(|) expr2,假如expr1計(jì)算結(jié)果為false(true),則整個(gè)邏輯與(邏輯或)表示式值為false(true),不會(huì)再計(jì)算expr2。4語(yǔ)句5小結(jié)1數(shù)據(jù)類型2常量和變量運(yùn)算符和表示式3 算術(shù)運(yùn)算符 關(guān)系/邏輯運(yùn)算符 賦值運(yùn)算符 自增和自減
59、 位運(yùn)算符 sizeof 運(yùn)算符 new和delete 條件運(yùn)算符 逗號(hào)運(yùn)算符 運(yùn)算符優(yōu)先級(jí) 類型轉(zhuǎn)換第71頁(yè)判斷某年是否為閏年(假如是閏年,它應(yīng)能被4整除,但不能被100整除,或被100整除,也能被400整除)bool isLeapYear(int year)bool n1 = (year%4=0);bool n2 = (year%100=0);bool n3 = (year%400=0);if (n1=true&n2!=true)|(n2=true&n3=true)return true;else return false; 第72頁(yè)3.3.3 賦值運(yùn)算符賦值運(yùn)算符包含“=”和復(fù)合賦值運(yùn)算
60、符。賦值運(yùn)算符左操作數(shù)必須是可修改左值。右操作數(shù)類型必須與左操作數(shù)類型完全匹配,不然編譯器會(huì)自動(dòng)將右操作數(shù)類型轉(zhuǎn)換為左操作數(shù)類型,假如不能進(jìn)行轉(zhuǎn)換,會(huì)引發(fā)編譯錯(cuò)誤。賦值運(yùn)算是有副作用,它改變了左操作數(shù)。賦值表示式本身值是實(shí)際賦給左操作數(shù)值,比如:int ival; ival = 1; /結(jié)果是1ival = 2.5;/結(jié)果是24語(yǔ)句5小結(jié)1數(shù)據(jù)類型2常量和變量運(yùn)算符和表示式3 算術(shù)運(yùn)算符 關(guān)系/邏輯運(yùn)算符 賦值運(yùn)算符 自增和自減 位運(yùn)算符 sizeof 運(yùn)算符 new和delete 條件運(yùn)算符 逗號(hào)運(yùn)算符 運(yùn)算符優(yōu)先級(jí) 類型轉(zhuǎn)換第73頁(yè)復(fù)合賦值運(yùn)算符C+還提供了一組復(fù)合賦值運(yùn)算符,普通語(yǔ)法格式
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合成氨氣體壓縮工復(fù)測(cè)知識(shí)考核試卷含答案
- 彩鋼瓦屋頂光伏電站設(shè)計(jì)方案
- 城市軌道交通設(shè)備調(diào)度員崗前工藝優(yōu)化考核試卷含答案
- 石油產(chǎn)品精制工安全行為模擬考核試卷含答案
- 熱浸鍍工崗前基礎(chǔ)綜合考核試卷含答案
- 土方開(kāi)挖與基坑降水專項(xiàng)施工方案
- 工廠安全隱患整改實(shí)施方案
- 遠(yuǎn)程醫(yī)療技術(shù)應(yīng)用方案報(bào)告
- 人力資源專員筆試題庫(kù)及解析
- 購(gòu)房尾款支付協(xié)議范本與注意事項(xiàng)
- 帶狀皰疹臨床治療方案與用藥指南
- 湘教版七年級(jí)生物重點(diǎn)復(fù)習(xí)提綱全集
- 2025年吉林省直機(jī)關(guān)公開(kāi)遴選公務(wù)員筆試題參考解析
- 科研項(xiàng)目財(cái)務(wù)專項(xiàng)審計(jì)方案模板
- 退伍留疆考試題庫(kù)及答案
- 數(shù)據(jù)倫理保護(hù)機(jī)制-洞察及研究
- 2025年鋼貿(mào)行業(yè)市場(chǎng)分析現(xiàn)狀
- 2025數(shù)字孿生與智能算法白皮書(shū)
- 鄉(xiāng)村醫(yī)生藥品管理培訓(xùn)
- 2025春季學(xué)期國(guó)開(kāi)電大??啤豆芾韺W(xué)基礎(chǔ)》一平臺(tái)在線形考(形考任務(wù)一至四)試題及答案
- 財(cái)務(wù)保密意識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論