c語言中那些關鍵字

2021-07-23 10:13:13 字數 824 閱讀 5302

它的意思是請求編譯器盡可能的將變數存在暫存器中,(注意文字的變化,盡可能而不是一定會將變數存在暫存器中。)

關於暫存器、記憶體、cpu,我在一本書上看到乙個非常形象的比喻,將三者分別當成太監、大臣和皇帝。其工作流程是:資料從大臣(記憶體)那拿出來先放在太監(暫存器)那,然後皇帝(cpu)再從太監(暫存器)那讀取資料處理,處理完之後,將資料通過太監(暫存器)存放在大臣(記憶體)

注意:① register變數必須是乙個單個的值,且其長度小於等於整形的長度。

②register變數不能用&來去變數的記憶體。

static int j;

void fun1(void)

void fun2(void)

int main()

return o;

}

這是我看到的對static概括地很全面的乙個例子,首先考慮一下輸出的i和j的值是什麼,為什麼?

我先說一下輸出的結果吧

i   1 2 3 4 5 6 7 8 9 10

j   1 1 1 1 1 1 1 1 1 1

顯而易見,其中是static用在了兩個地方,修飾的變數分別是全域性變數j和區域性變數i。首先說一下區域性變數i吧,如果沒有那個static修飾的話,那麼結果很顯然是十個一,那麼加上這個關鍵字之後為什麼會結果大不相同呢,除錯一下就可以明顯的看出來,i值在經過static int i=0;時指是不變的,也就是說(專業術語),被static修飾的變數總是存在記憶體的靜態區,所以即使這個函式執行結束,這個變數的只也不會被銷毀,函式下次使用時仍然能用到這個值。

c語言中關鍵字

static 修飾區域性變數,改變變數的生命週期和儲存空間,但是不改變作用域,仍然是乙個區域性變數,作用域僅限於該 修飾全域性變數,改變變數的作用域只能在當前檔案訪問,不能在其他檔案訪問 修飾函式,改變函式的作用域,函式只能在本檔案中被呼叫,不能在其他檔案被呼叫。extern 可以修飾變數和函式,表...

c語言中volatile關鍵字

volatile關鍵字是一種型別修飾符,用它宣告的型別變數表示可以被某些編譯器未知的因素更改 比如 作業系統 硬體或者其它執行緒等。遇到這個關鍵字宣告的變數,編譯器對訪問該變數的 就不再進行優化,從而可以提供對特殊位址的穩定訪問。使用該關鍵字的例子如下 int volatile nvint 當要求使...

C語言中volatile關鍵字

一 前言 程式的優化 1 硬體級別上的優化 a.由於記憶體訪問速度遠不及cpu處理速度,為提高機器整體效能,在硬體上引入硬體快取記憶體cache,加速對記憶體的訪問。b.在現代cpu中指令的執行並不一定嚴格按照順序執行,沒有相關性的指令可以亂序執行,以充分利用cpu的指令流水線,提高執行速度。2 軟...