2.2.2 變數宣告和定義的關係
c++支援分離時編譯,就是允許把程式拆分成多個邏輯部分來編寫,該機制允許將程式分割成若干個檔案,每個檔案可以單獨編譯.那麼如果將乙個程式分成多個檔案來寫,就需要又有一種在檔案間共享**的方法
當然這裡不可能一次講完分離式編譯,具體將在2.6.3節中繼續學習,這裡只作介紹
我們為了實現分離式編譯,就必須完成一件事,就是將宣告和定義區分開,何謂宣告,何謂定義,宣告就是將變數名稱為程式所熟知,即規定了變數的型別和名字,在這一點上宣告與定義相同,但除此之外,定義還申請儲存空間,還可能會為變數賦乙個初始值,即任何包含了顯式初始化的宣告就將成為定義
乙個檔案如果想使用別處定義的名字必須包含對那個名字的宣告,而定義負責建立與名字關聯的實體
如果我們想宣告乙個變數而非定義它,我們就需要extern關鍵字,並且不要顯式地初始化變數
extern
int i;
記住變數只能被定義一次,但可以多次被宣告
2.2.3 識別符號
變數命名規範
(1)識別符號要體現實際含義
(2)變數名一般用小寫字母
(3)使用者自定義的類名一般以大寫字母開頭
(4)如果變數名由多個單詞組成,則單詞之間應以下劃線等方式區分開
2.2.4 名字的作用域
作用域是程式的一部分,在其中的名字有其特殊的含義,c++語言中大多數作用域都以花括號隔開
同乙個名字在不同的作用域中可能指向不同的實體,名字的有效區域始於名字的宣告語句,以宣告語句所在的作用域末端為結束
作用域有全域性作用域和塊作用域,全域性作用域位於所有的花括號之外,擁有在全域性中被呼叫的能力,而塊作用域位於黃括號之內,只能由花括號內進行呼叫,而花括號之間的包含會實現怎樣的效果呢
巢狀的作用域
作用域能彼此包含,被包含的作用域稱為內層作用域,包含別的作用域的稱為外層作用域
作用城中且宣告了某個名字, 它所巢狀著的所有作用域中都能訪問該名字。允許在內層作用域中重新定義外層作用城已有的名字
輸出#1出現在區域性變數reused定義之前,因此這條語句使用全域性作用域中定義的名字reused,輸出42 0。輸出#2發生在區域性變數reused定義之後,此時區域性變數reused正在作用域內(inscope),因此第二條輸出語句使用的是區域性變數reused而非全域性變數,輸出0 0。輸出#3使用作用域操作符(參見1.2節,第7頁)來覆蓋預設的作用域規則,因為全域性作用域本身並沒有名字,所以當作用域操作符的左側為空時,向全域性作用域發出請求獲取作用域操作符右側名字對應的變數。結果是,第三條輸出語句使用全域性變數reused,輸出42 0。
2021 1 25 Robocup 2D學習日誌
存在的疑問 1 首先判斷自己是否具有踢球條件。2 然後判斷隊友是否有更優先的踢球條件,如果有,則優先讓給隊友踢球。3 如果隊友沒有優先踢球條件,並且自己有踢球條件,則呼叫dokick函式,執行踢球動作。4 否則,呼叫domove函式,執行運動動作。1 首先判斷是否正在執行bhv chainactio...
2021 1 25工作安排和學習內容
公司 ivory tower ppg 阿里 版本.tacotron部分,畫出本地化演算法.畫 設計超引數搜尋實驗.商量用rayhane或torch.ppg提取也寫好演算法,順便訓一下cpu版,看學源的ppt.1月31之前有個初步結果 學校 公司 混語言stage2,雙語語料lid修正後的合成結果整理...
2021 1 25 day5 列表作業
1.已知乙個數字列表,求列表中心元素。nums 1,2,3,4,5 media nums int 1 len nums 2 print nums media nums 1 32.已知乙個數字列表,求所有元素和。nums 1,2,3,4,5 sum 0 for x in nums sum x prin...