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