c語言 關鍵字(13)

2021-07-15 12:59:54 字數 2106 閱讀 3402

關鍵字包括register,static,const,typedef,extern

含義:是暫存器變數

作用:請求編譯器盡可能的將這個變數值儲存在cpu內部的暫存器內,以節省cpu從記憶體中抓取資料的時間,提高**的執行效率

適用變數:頻繁被訪問的變數,如迴圈變數

注意事項:1、只能修飾區域性變數,而不能修飾全域性變數或函式 2、不能通過取位址來得到變數的位址 3、修飾的變數一定要是cpu所能接受的資料型別

注釋:

1、為何要盡可能的儲存在暫存器內:因為cpu內部的暫存器有限,是稀缺資源

2、為何不能修飾全域性變數:因為全域性變數是會被多執行緒或多工訪問的,而被register訪問的變數只有本程序知道變數儲存在哪兒

含義:靜態變數

修飾物件:可以修飾全域性變數,也可以修飾區域性變數,還可以修飾函式

作用

修飾區域性變數的作用:延長他的生命週期,使得原本函式結束就要被釋放的變數能夠在程式結束之後再釋放。

修飾全域性變數的作用:使得該變數只能在本檔案中被使用,並將全域性變數儲存在靜態資料區,預設初始化為0

修飾函式的作用:使得該函式只能在本檔案中被訪問

何時修飾注釋:

1、如果另一函式a.c要呼叫本函式b.c的全域性變數,則可以在a.c裡加上

因為extern的作用是外部宣告。

2、被static修飾的函式,如果定義在乙個未被修飾的函式後面。則先要在這個未被修飾的函式前面加上被修飾函式的宣告。

3、為何想讓變數在程式結束後釋放,而不用全域性變數呢:因為全域性變數比較危險,對所有人都可見,而靜態區域性變數更安全

含義:是乙個唯讀變數

注釋:const修飾的是乙個變數名,所以變數名對應的空間可變而不能通過變數名來修改這個空間

作用:使其修飾的變數名不能修改此空間,而其空間通過其他方式可以改變

注釋:const離誰近,誰不能自加。

int num = 5;

const int

*p = #

p++;

(*p)++;

num++;

此時const修飾的是*p,所以(*p)++不可以實現。

因此,const int *p 和int const *p不可以實現(*p)++

而int * const p不可以實現p++

修飾物件:變數及形參

注釋:防止實現函式過程中,會修改實參的值

注意事項:一定要將變數初始化,不然以後無法賦值

含義:給資料型別重新命名

作用:1、提高**移植性 2、將複雜名變為簡單名,方便編寫程式 3、同時也能起注釋作用

含義:修飾被不同執行緒訪問和修改的變數。

注釋:如果不加入volatile,基本上會導致這樣的結果:要麼無法編寫多執行緒程式,要麼編譯器失去大量優化的機會。

作用:確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值.

簡單地說就是防止編譯器對**進行優化.比如如下程式:

xbyte[2]=0x55;

xbyte[2]=0x56;

xbyte[2]=0x57;

xbyte[2]=0x58;

對外部硬體而言,上述四條語句分別表示不同的操作,會產生四種不同的動作,但是編譯器卻會對上述四條語句進行優化,認為只有xbyte[2]=0x58(即忽略前三條語句,只產生一條機器**)。如果鍵入volatile,則編譯器會逐一的進行編譯並產生相應的機器**(產生四條**).

C語言關鍵字

c語言關鍵字 在檔案範圍的教訓和關鍵字,你知道靜態變數保持他們的價值觀,甚至不在他們超出範圍的破壞。比如說呢。int generateid int main this program prints 01 2 請注意,s nid一直保持它的價值的跨多個函式呼叫。static關鍵字有另一種意思當應用到全...

C語言關鍵字

關鍵字就是已被c語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名 函式名等 由ansi標準定義的c語言關鍵字共32個 auto double int struct break else long switch case enum register typedef char extern...

c語言關鍵字

c 語言標準定義的32 個關鍵字 1 auto 宣告自動變數,預設時編譯器一般預設為auto int 宣告整型變數 double 宣告雙精度變數 雙精度浮點型 long 宣告長整型變數 char 宣告字元型變數 float 宣告浮點型變數 單精度浮點型 6.1 float的有效位通常有 位,指的是小...