嵌入式100題(031) c c 中變數的作用域

2021-10-20 07:28:03 字數 693 閱讀 2177

作用域規則告訴我們乙個變數的有效範圍,它在哪兒建立,在哪兒銷毀(也就是說超出了作用域)。變數的有效作用域從它的定義點開始,到和定義變數之前最鄰近的開括號配對的第乙個閉括號。也就是說,作用域由變數所在的最近一對括號確定。

全域性變數:

全域性變數是在所有函式體的外部定義的,程式的所在部分(甚至其它檔案中的**)都可以使用。全域性變數不受作用域的影響(也就是說,全域性變數的生命期一直到程式的結束)。如果在乙個檔案中使用extern關鍵字來宣告另乙個檔案中存在的全域性變數,那麼這個檔案可以使用這個資料。

區域性變數:

區域性變數出現在乙個作用域內,它們是侷限於乙個函式的。區域性變數經常被稱為自動變數,因為它們在進入作用域時自動生成,離開作用域時自動消失。關鍵字auto可以顯式地說明這個問題,但是區域性變數預設為auto,所以沒有必要宣告為auto。

暫存器變數:

暫存器變數是一種區域性變數。關鍵字register告訴編譯器「盡可能快地訪問這個變數」。加快訪問速度取決於現實,但是,正如名字所暗示的那樣,這經常是通過在暫存器中放置變數來做到的。這並不能保證將變置在暫存器中,甚至也不能保證提高訪問速度。這只是對編譯器的乙個暗示。

使用register變數是有限制的:

(1) 不可能得到或計算register 變數的位址;

(2) register變數只能在一

嵌入式100題(48) 氣泡排序

氣泡排序 氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的 如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,...

嵌入式100題(51) 歸併排序

歸併排序 歸併排序是把序列遞迴地分成短序列,遞迴出口是短序列只有1個元素 認為直接有序 或者2個序列 1次比較和交換 然後把各個有序的段序列合併成乙個有序的長序列,不斷合併直到原序列全部排好序。可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等也沒有人故意交換,這不會破壞穩定性。那...

嵌入式100題(54) vector list異同

vector 連續儲存的容器,動態陣列,在堆上分配空間。底層實現 陣列。兩倍容量增長 vector 增加 插入 新元素時,如果未超過當時的容量,則還有剩餘空間,那麼直接新增到最後 插入指定位置 然後調整迭代器。如果沒有剩餘空間了,則會重新配置原有元素個數的兩倍空間,然後將原空間元素通過複製的方式初始...