c++primer學習筆記-----2.2變量

變量提供一個具名的、可供程序員操作的存儲空間;變量的數據類型決定着變量所佔空間的大小佈局方式變量能參與的運算


2.2.1 變量定義


【在c++ 語言中,初始化和賦值是兩個完全不同的操作(所以有些數據類型必須在定義的同時初始化,如引用類型常量類型)。】


【初始化有多種形式:

int a = 0;
int a = {0};
int a{0};
int a(0);
用花括號來初始化變量稱爲列表初始化,當其用於內置類型的初始化時,如果初始值存在丟失信息的風險,則編譯器會報錯;

使用列表初始化能增強程序的安全性。】


【如果內置類型的變量未被顯式初始化,它的值由定義的位置決定:

定義於任何函數體之外的變量被初始化爲0;

在函數體內部的內置類型變量將不被初始化。


【每個類各自決定其初始化對象的方式,比如是否允許不經初始化就定義對象,如果類允許這種行爲,它也將決定對象的初始值。


2.2.2 變量聲明和變量定義的關係


聲明使得名字爲程序所知,一個文件如果想使用別處定義的名字則必須包括對該名字的聲明。
定義負責創建與名字關聯的實體。】

【變量聲明也規定了變量的類型和名字。
如果想聲明一個變量而非定義它,就在變量名前添加關鍵字extern,而且不要顯式地初始化變量。】

【在函數體內部,如果試圖初始化一個由extern 關鍵字標記的變量,將引發錯誤。】

2.2.3 標識符


【c++ 的標識符由字母、數字和下劃線組成,其中必須以字母和下劃線開頭。
c++ 保留了一些名字供語言本身使用,這些名字不能被用作標識符。
用戶自定義的標識符中不能出現兩個連續的下劃線,也不能以下劃線緊連大寫字母開頭。
定義在函數體之外的標識符不能以下劃線開頭。

【變量命名有許多約定俗成的規範:
標識符要能體現實際含義;
變量名一般用小寫字母;
用戶自定義的類名一般以大寫字母開頭;
如果標識符由多個單詞組成,則單詞間應有明顯區分(如使用下劃線,或從第二個單詞開始首字母大寫)。

2.2.4 名字的作用域


【同一個名字在不同的作用域中可能指向不同的實體。
名字的有效作用域始於名字的聲明語句,以聲明語句所在的作用域末端爲結束。
for(int i = 0; i < 10; i++)
cout << i;
該段代碼中,變量i 的作用域爲for 循環語句內部。】

【作用域中一旦定義了某個名字,它所嵌套着的所有內層作用域都能訪問該名字。
也允許在內層作用域中重新定義外層作用域中已有的名字,此時在內層作用域中會將外層作用域的相同名字的變量屏蔽。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章