C語言的關鍵字

關鍵字:

(一)、regtister(寄存器變量)

1、計算機的三大組成部分:CPU,內存,硬盤
2、CPU三大組成部分:控制器,運算器、儲存器(寄存器,cache(高速緩存))
3、CPU通過總線從內存中獲取數據(ARM中是總線架構),從內存中一次又一次的抓取數據比較耗時,所以將頻繁訪問的數據存放在CPU的寄存器中,提高運行效率。
4、使用注意事項:
1>不可對register 變量取地址(因爲取地址是對內存進行的操作)
2>register修飾的變量一定是CPU所能接受的數據類型
3>register只可修飾局部變量,不可修飾全局變量和函數
5、register總結:
register只可修飾局部變量,不可修飾全局變量和函數,它的作用是請求編譯器儘可能的將變量存在CPU的內部寄存器中,這樣做可以減少CPU從內存中來回抓取數據的時間,提高程序運行效率。當數據被頻繁訪問時可以用寄存器變量進行修飾,比如循環變量。register在使用時應注意以下幾點:1>不可對register 變量取地址,2>register修飾的變量一定是CPU所能接受的數據類型

(二)、static

作用:static可以修飾函數和變量。static修飾局部變量時,局部變量爲靜態局部變量,延長了局部變量的生命週期,使局部變量在整個程序結束後釋放,但只可在本文件中被調用。static修飾全局變量時,全局變量爲靜態全局變量,只可在本文件中被調用。static修飾函數時,該函數爲靜態函數,只可在本文件中被調用。

(三)、extern

作用:外部申明,一個.c可以訪問另一個.c的全局變量
例:
extern int count;
void print()
{
    printf("%d\n",count);
}
注意:要申明數據類型

(四)、typedf

作用:給數據類型重命名,提高代碼移植性


#typdef int INT 與 #define INT int 哪個好?
#typdef int INT好一點,如果你連續定義:INT a,b用#define會出現問題

(五)、const

1、修飾只讀變量
2、只讀變量:該變量不是空間不可變,而是不可以通過變量名修改空間對應的值
可以這樣修改:
const int num = 5;
int *p = #
(*p)++;
==>num = 6;
即可以通過只讀變量的地址來修改其值
3、const變量在定義時一定要初始化
如果未初始化,如:
const int num;
num = 5;
則已經通過變量名來修改其值了,非法。
4、例子:
int num = 5;
const int *p  = #
num++;
p++;
(*p)++;
其中(*p)++不可以,口訣:const離誰近誰不可變。比如:int *const p = &num,則p不可變;const *int const p = num;則兩個都不可以變。
5、例:char *strcpy(char *dest,const char *src):const可以保護傳入的實參不被修改
6、const作用總結:
作用:const修飾只讀變量,只讀變量的含義是:該變量不是空間不可變,而是不可以通過變量名修改空間對應的值。const在使用時應注意在定義時一定要初始化。
發佈了47 篇原創文章 · 獲贊 31 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章