auto :用來定義自動申請內存、自動釋放內存的變量(局部變量、塊變量)
不加就代表加,與signed一樣(注意:全局變量前不能使用)
const :是對變量提供保護,定義出來不一定是常量,但不決定安全
變量一旦初始化后,就不能顯示修改的值
const修飾被初始化過的全局變量才是真正的變量,一旦修改就會出現錯誤,因為編譯器把這種全局變量的儲存位置划分成text
static:(限制作用域《全局變量和函數》,改變存儲位置、延長生命周期《局部、塊變量》)
《1》修飾變量
修飾全局變量:會限制全局變量的作用域,只能在他所在的.c內使用
修飾局部、塊變量:改變存儲位置由棧改為bss(無初始化)或data(初始化)但使用范圍(作用域)沒有變,並會延長生命周期
《2》修飾函數
const int f(void):const修飾返回值
static int f(void):static修飾函數
有普通函數(外部函數)變成內部函數,只能在.c中作用
register:
計算機的存儲介質:硬盤-》固態硬盤-》內存條-》緩存-》寄存器
申請把變量的儲存位置更改為寄存器,不一定成功
寄存器變量不能取地址,&變量名(錯的)
volatile :不確定,易變的
如果一個變量值沒有被顯示的修改,編譯器不會再次從內存他的數值,而是直接使用上次的讀取結果(優化)
volatile的功能就是告訴編譯器變量的值隨時會發生改變,不要優化他的取值過程(每次用到變量時都去內存中獲取他的值)
int num=10
numnum;永遠為真
volatile int num=10
numnum;不一定為真
extern:聲明變量,多文件中共享全局變量時,誰使用誰聲明
定義:創建變量名,分配存儲空間
聲明:創建變量名
a.c中定義一個全局變量,b.c中也想使用