1.1 算術類型
類型 | 最小存儲空間(位) |
bool | 1 |
char | 8 |
wchar_t | 16 |
short | |
int | |
long | 32 |
float | 6位有效數字 |
double | 10位有效數字 |
long double |
不能修改的值成為常量。
1.3 變量與常量相反,是可以修改的值。
1.4 引用引用主要用于函數的形參。引用必須用與該引用同類型的對象初始化。
1.4.1
引用是别名,所有針對引用的操作實際上都是作用在該引用的綁定對象上。引用一旦綁定對象後,不能再綁定到其他對象。
1.4.2
const引用
const引用是指向const對象的引用。
Eg: const
int ival = 1024;
const
int& refval1 = ival; //ok
int&
refval2 = ival; //error
1.5 const 限定符const可以用來定義常量。
1.6 typedef用來定義類型的同義詞:
Eg: typedef string StuName;
1.7 數組1.7.1
數組的定義和初始化
數組的維數必須使用大于等于1的常量表示; 數組的維數必須在方括号内定義。
1.
初始化數組元素
如果沒有顯示初始化元素, 則數組元素會像普通變量一樣初始化:
●在函數體外定義的内置數組,其元素初始化為0;
●在函數體内定義的内置數組,其元素無初始化;
●不管在什麼位置,如果元素類型為類,則自動調用該類的預設構造函數,如果沒有預設構造函數,則必須提供顯示初始化。
2.
特殊的字元數組
使用一組字元字面值初始化字元數組時,一定要記得添加結束字元串的空字元。
Eg:
const char cz[6] = "Daniel"; //Daniel is 7 elements
3.
數組不可以直接複制或指派
int ia[] = {0, 1, 2};
int ia2[](ia); //error
int ia3[3];
ia3 = ia; //error
1.7.2
數組的操作
數組下标的正确類型為size_t。
1.8 指針 1.9 C 風格字元串1.9.1
C風格字元串的使用
标準庫函數
strlen(s)
strcmp(s1, s2)
strcat(s1, s2)
strcpy(s1, s2)
strncat(s1, s2, n)
strncpy(s1, s2, n)
永遠不要忘記字元串結束符null
char ca[] =
{'C', '+', '+'}; //沒有結束符
cout << strlen(ca) << endl; //傳回的數值不正确,結果不可預料
1.9.2
建立動态數組
動态數組的定義
int *pia = new int[10];
初始化動态配置設定的數組
string *psa = new string[10]; //10個未初始化的string
int *pia = new int[10]; //10個未初始化的int
int *pia2 = new int[10](); //所有元素初始化為0
const對象的動态數組
必須為這個數組提供初始化;因為每個數組元素都是const對象,是以無法指派。
const int* pci_bad = new const
int[10]; //error: 未初始化
const int* pci_ok = new const
int[10](); //ok: 所有元素預設初始化為0
const string* pcs_ok = new const
string[10]; //ok: 初始化10個空字元串
4.
允許動态配置設定空數組
size_t size = getSize();
int* p = new int[n];
for (int* q = p; q != p + size; q++)
/* process */
5.
動态空間的釋放
動态配置設定的記憶體必須釋放,否則會造成記憶體洩露,耗盡資源。
Eg:
delete[] pia;
6.
動态數組的使用
1.9.3
新舊代碼相容
混合使用string标準庫和C風格字元串
string
str = "hello";
char* cStr =
str.c_str();
使用數組初始化vector
const size_t ARR_SIZE = 6;
int aiData[ARR_SIZE] =
{1,2,3,4,5,6};
vector<int> ivec(aiData, aiData
+ ARR_SIZE);