變量的聲明
所有變量必須在使用前進行聲明,變量可以在使用前進行聲明,不必在函數或過程的開始位置先聲明。
變量名規範
1. 名稱隻能使用字母、數字、下劃線。
2. 名稱的第一個字元不能是數字。
3. 不能與C++關鍵字重名。
注:以下劃線開頭的變量名是系統專用的,盡量不要這樣命名。長度不要過長,最長盡量不要超過63。
變量聲明舉例
變量的初始化
1. 預設初始化
預設初始化是指定義變量時沒有指定初值時進行的初始化操作。
内置類型變量
若變量定義在語句塊(即{})外面,那麼變量會被預設初始化為0或等同于0的值。
若變量定義在語句塊裡面,變量的值是不确定的。
為什麼不初始化變量呢?給自己挖坑嗎?
類類型變量
無論定義于何處都會執行預設構造函數。如果預設構造函數中沒有初始化變量,那麼變量的值是不确定的。如果不 存在構造函數,編譯器會根據需要建立空預設構造函數。
2. 值初始化
值初始化是指用了初始化器但沒有提供初始值的情況。變量會被預設初始化為0或等同于0的值。
3. 直接初始化
直接初始化就是指使用了初始化器并且提供了初值的情況。
對于類來說,直接初始化會調用與實參最佳比對的構造函數。
例如:int a(1);string str("hello");Test a(1,2,3);
4. 拷貝初始化
拷貝初始化就是用等号對變量進行指派的方法,即将右值拷貝給左值。
内置類型變量
對于内置類型變量來說,直接初始化與拷貝初始化差别幾乎可以忽略不計。
類類型變量
對于類類型變量來說,直接初始化會調用與實參最佳比對的構造函數,但是拷貝初始化調用類的拷貝構造函數。
*注:對類類型變量進行初始化時,如果類的構造函數采用了explicit修飾并且需要隐式類型轉換。此時隻能通過直接初始化而不能通過拷貝初始化。
例如:
5. 清單初始化
在可以使用直接初始化和拷貝初始化的地方都能用清單初始化。清單初始化對容器的初始化同其他方法更友善一些。
對于容器
特别地,對于容器初始化時有()和{}兩種方法。
使用()
有一個參數時僅構造容器。兩個參數時,第一個參數構造容器,第二個初始化容器。
使用{}
如果參數序列的所有值均與容器類型相同,那麼初始化時會将參數清單中的所有值放入容器中,容器的元素數 量和參數數量相同。
如果參數序列中的值與容器類型不同,那麼會考慮将該值作為構造容器的參數;如果不能作為參數那麼就會出 現編譯錯誤。
例如:
Copy
6. 動态配置設定時的初始化
動态配置設定時不加以初始化時,内置資料類型的變量的值是不确定的。類類型變量将調用預設構造函數進行初始化。
例如:
int* a = new int();
int* a = new int(123);
vector<int> *t1 = new vector<int> {1,2,3,4};
學習C/C++程式設計知識,想要成為一個更加優秀的程式員,或者你學習C/C++的時候有難度,可以來部落客的C語言C++零基礎程式設計學習圈,裡面不僅有學習視訊和檔案資料,還有更多志同道合的朋友,歡迎轉行也學習程式設計的夥伴,和大家一起交流成長會比自己琢磨更快哦!
微信公衆号:C語言程式設計學習基地