####一:資料型別
c++主要有bool,char,short,int,long,long long ,float,double,long double,wchar_t(寬字元),char16_t , char32_t(unicode字元)。每個型別對應不同的位元組尺寸,以上型別都是有符號的,加上關鍵字unsigned會變成無符號型。算術表達時最好不要用char和bool,因為在不同機器上型別不確定。有型別必會接觸到型別轉換的問題:
1> 把非布林型別轉換布林型別,0為false,否則為true。
2>把布林轉換非布林,false結果為0,true為1。
3>把浮點數轉換為整型,只保留小數點之前。
4>把整型轉換為浮點,小數為0。
5>賦給無符號型別超出表示範圍的值時,結果是初始值對無符號型別表示數值總數取模後的餘數,就是負數加上無符號數的模。
6>賦給帶符號型別乙個超出它表示範圍的值時,結果是未定義的。
因此在程式設計的時候要時刻注意型別的變換,不經意之間就會發生錯誤。
轉義序列:兩類字元不能直接使用,一類不可列印。如退格,沒有可檢視;另一類是有特殊含義的字元,如問號,反斜槓。
換行符 \n 橫向製表符 \t 報警符 \a 縱向製表符 \v 退格符 \b
雙引號 " 反斜槓 \ 問號 ? 單引號 』 回車符 \r
####二:變數
對於c++來說,變數可以和物件互換只用,如 int a=0; int是型別,a是變數名,0是給a初始化(初始化不等於賦值,後面會詳解),也可省略,分號結束。未做初始化,值有可能是未定義的,也有可能是預設初始化。變數是可以定義和宣告:
extern int i; //宣告i並非定義i
int j; //定義i
加extern可以在本檔案當中呼叫另外檔案的變數,如果在extern時顯示初始化,就不是宣告而是定義了。變數是可以多次宣告的。重要一點是變數命名要避開關鍵字,同時變數還有作用域的問題,分為全域性作用域和塊作用域,大部分體現在花括號內,c++有域的概念,可以顯示的呼叫不同域內的變數。
####三:復合型別
1.引用
引用是為物件起了乙個別名,比如你爸爸管你叫小莫,媽媽管你叫寶貝,雖然名字不一樣,但是你還是你,沒有變。
int i = 100; //定義i
int &j = i; //j指向i,別名
int &k; //error 必須初始化
引用並不是乙個物件,所以不能定義引用的引用,而且引用必須型別一致,是乙個物件。
2.指標
指標與引用不同,指標是乙個物件,允許賦值和拷貝,無需初始化:
int *p;
int *p = &i ; //獲取i的位址
可以利用指標訪問物件:
int ival = 42;
int *p = &ival; //p存放變數ival的位址,或者說p是指向變數ival的指標。
cout << *p; //由符號*得到指標p所指的物件,輸出42
*p = 0; //也可以賦值
cout<< *p; //輸出0
空指標定義 int *p1 = nullptr / 0;也有null。需包含cstdlib標頭檔案。指標不像引用,可隨意改變物件和賦值。
指向指標的指標:
int ival = 10;
int *p = &ival;
int **ppi = &p; //**ppi 取出的值為10
指向指標的引用:
int i = 1;
int *p =&i;
int *&r = p; // r對指標p的引用
*r= 0; //i=0
3.const
const是常量,一經確定就不能改變,任何企圖改變他的值都會引發錯誤,所以const限定的值必須初始化。const僅在本檔案內有效,要想全域性需extern加以限制。
變數和基本型別
算術型別 arithmetic type c 標準規定了每個算術型別的最小儲存空間,但允許編譯器使用更大的儲存空間。事實上,對於int型,幾乎現在所有的編譯器使用的儲存空間都比所要求的大 也表明,在編寫程式時不能對這些型別的大小做任何假設 c 算術型別最小儲存空間規定如下 注 要特別注意int型,並...
變數和基本型別
c 程式通常由許多檔案組成,為了讓多個檔案訪問相同的變數,c 區分了宣告和定義。變數的定義 definition 用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。c 支援兩種初始化變數的形式 複製初始化 copy initialization 和直接初始化 dir...
變數和基本型別
1.變數宣告和定義的關係extern int j 宣告j int j 定義j extern int j 0 定義2.識別符號的組成 3.變數命名規範 4.作用域理解 include 該程式僅用於說明,函式內部不宜定義與全域性變數同名的變數 int i 0 全域性變數 intmain 5.引用 引用並...