C語言變量的作用域和存儲類型

1.動態局部變量:也稱局部變量、自動變量,

是指在函數內部定義的自動變量,不帶static修飾,作用域是定義該變量的子程序。在退出函數後,變量自帶內存會自動釋放。

2.靜態局部變量:是指在函數內部定義的靜態變量,帶static修飾,作用域是定義該變量的子程序。只被定義和初始化一次,這種變量在函數退出後不會釋放內存,且保持其值,下次調用時不再重新創造和初始化該變量,而是直接用上一次留下的值為基礎來進行操作。直到程序退出時一起釋放(生存期為整個源文件)。

3.動態全局變量:也稱全局變量,是指在所有函數外定義的動態變量,作用域為整個程序,即可以在任何函數內使用,且可以被程序的其他文件所訪問。只被定義和初始化一次,以後調用時值保持上一次的不變。

4.靜態全局變量:是指在所有函數外定義的靜態變量,作用域為整個程序,可以在定義它的文件內的任何地方被

訪問,不可以被程序的其他文件所訪問。

5.跨文件引用全局變量:在一個程序的多個.c源文件中,可以在一個.c源文件中定義全局變量y_x,並且可以在別的另一個.c源文件中引用該變量y_x(引用前要聲明)。函數和全局變量在C語言中可以跨文件引用,他們的連接範圍是全局的,具有文件連接屬性,函數和全局變量是可以跨文件看到的(直接影響就是:在a.c和b.c中各自定義了一個函數func(),名字相同但內容不同,編譯報錯)。

6.動態分配內存:指通過malloc,calloc,zalloc等函數申請的內存空間,這類空間在退出函數後不會自動釋放,要釋放只有通過free函數的調用,進行內存釋放。

C語言中,局部變量可以和全局變量重名。當局部變量和全局變量同名時,在定義局部變量的子程序內,局部變量起作用,在其它地方全局變量起作用,即局部變量會屏蔽與之同名的全局變量,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。


分享到:


相關文章: