1.文字常量(literal constant)
char,int,short,long,float,double,long double,boolean
for example: 128u,1024L,7LU,3.14f,'a',"aa",true
轉(zhuǎn)義序列:一部分不可打印的字符,如換行,制表,單引號(hào),雙引號(hào)等。
(\n,\t,,\v,\b,\r,\f,\a,\\,\?,\',\")
寬字符文字:字符文字前面加上L,例:L'a'。寬字符常量用來支持某些語言的字符集合如漢語,日語這些語言中的某些字符不能用單個(gè)字符來表示。
2.變量
C++k中的每個(gè)符號(hào)變量都與一個(gè)特定的數(shù)據(jù)類型相關(guān)聯(lián),這個(gè)類型決定了相關(guān)內(nèi)存的大小,布局,能夠存儲(chǔ)在該內(nèi)存區(qū)的值的范圍以及可以應(yīng)用其上的操作集。
例如:
int student_count;
double salary;
bool on_loan;
string street_address;
char delimiter;
變量和文字常量都有存儲(chǔ)區(qū),并且有相關(guān)的類型。區(qū)別在于變量是可尋址的。
每個(gè)變量,都有兩個(gè)值:
1.數(shù)據(jù)值,存儲(chǔ)于某個(gè)內(nèi)存地址中。被稱為右值,即被讀取的值。文字常量和變量都可被用作右值。
2.地址值,存儲(chǔ)數(shù)據(jù)值的那塊內(nèi)存的地址。它有時(shí)被稱為變量的左值,即位置值。文字常量不能被用作左值。
在C++中,程序在使用之前必須先知道該對(duì)象。可以通過對(duì)象聲明來實(shí)現(xiàn),它的作用是使程序知道該對(duì)象的類型和名字。由關(guān)鍵字extern以及跟在后面的對(duì)象類型以及對(duì)象的名字構(gòu)成。聲明不是定義,不會(huì)引起內(nèi)存分配。一個(gè)程序只能包含一個(gè)對(duì)象的一個(gè)定義,卻可以包含任意數(shù)目的對(duì)象聲明。可將聲明放于頭文件中。
對(duì)象的定義
類型指示符+名字,分號(hào)結(jié)束。例如:unsigned long distance;
如果變量是在全局域定義的,系統(tǒng)提供初始值0。如果是局部域的,或是通過new表達(dá)式動(dòng)態(tài)分配的,系統(tǒng)不提供初始值0。這樣的對(duì)象是未初始化的,它們不是沒有值,而是未定義。
C++支持兩種形式的初始化。
一種是使用賦值操作符的顯式語法形式:int ival=1024;
第二種是隱式形式:int ival(1024);
每種內(nèi)置數(shù)據(jù)類型都支持一種特殊的構(gòu)造函數(shù)語法,可將對(duì)象初始化為0。例:int ival=int();
對(duì)象可以用任意復(fù)雜的表達(dá)式來初始化,包括函數(shù)的返回值。
指針
指針持有另一個(gè)對(duì)象的地址,使我們能夠間接地操作這個(gè)對(duì)象。
通過在標(biāo)識(shí)符前加一個(gè)解引用操作符(*)來定義指針。例:
int *p1,p2;
complex<double> *cp;
當(dāng)指針持有0值時(shí),表明它沒有指向任何對(duì)象,或持有一個(gè)同類型的數(shù)據(jù)對(duì)象的地址。
空(void*)類型指針,它可以被任何數(shù)據(jù)指針類型的地址值賦值(函數(shù)指針不能賦值給它).
不能操作空類型指針?biāo)赶虻膶?duì)象,只能傳送該地址值或?qū)⑺c其他地址值作比較。
C++提供了解引用操作符(*)來間接地讀和寫指針?biāo)赶虻膶?duì)象。
int ival=1024;
int *pi=&ival;
int **ppi=πppi是指向int指針pi的指針。
int *pi2=*ppi;
要訪問到ival,需要兩次解引用ppi.*ppi
指針可以讓它的地址值增加或減少一個(gè)整數(shù)值。稱為指針的算式運(yùn)算。典型用法是遍歷一個(gè)數(shù)組。
字符串類型
C風(fēng)格字符串