1. 程式人生 > >關鍵字static , volatile ,const 解析

關鍵字static , volatile ,const 解析

static:

1.修飾全域性變數,修飾的變數生命週期為全執行階段,可以在不同的模組呼叫該變數;

 

靜態全域性變數有以下特點:

該變數在全域性資料區分配記憶體;

未經初始化的靜態全域性變數會被程式自動初始化為0(在函式體內宣告的自動變數的值是隨機的,除非它被顯式初始化,而在函式體外被宣告的自動變數也會被初始化為0);

靜態全域性變數在宣告它的整個檔案都是可見的,而在檔案之外是不可見的;

一般程式把新產生的動態資料存放在堆區,函式內部的自動變數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料(即使是函式內部的靜態區域性變數)也存放在全域性資料區。全域性資料區的資料並不會因為函式的退出而釋放空間。

 

 

全域性變數和全域性靜態變數的區別:

1)全域性變數是不顯式用static修飾的全域性變數,全域性變數預設是有外部連結性的,作用域是整個工程,在一個檔案內定義的全域性變數,在另一個檔案中,通過extern 全域性變數名的宣告,就可以使用全域性變數

2)全域性靜態變數是顯式用static修飾的全域性變數,作用域是宣告此變數所在的檔案,其他的檔案即使用extern宣告也不能使用。

區域性靜態變數:對在函式體內部的變數進行修飾 ,則使該變數執行時儲存在資料段,不單獨受該函式的控制,從來被整個檔案內的程式控制;

修飾函式

在函式的返回型別前加上static

關鍵字,函式即被定義為靜態函式。靜態函式與普通函式不同,它只能在宣告它的檔案當中可見,不能被其它檔案使用。