static有什麼用

面試題:static有什麼作用?

答:在C語言中,static主要定義全局靜態變量,定義局部靜態變量,定義靜態函數

 一、       定義全局靜態變量 :在全局變量前面加上關鍵字static,該全局變量變成了全局靜態變量。全局靜態變量有以下特點:

(1)       在全局數據區內分配內存

(2)       如果沒有初始化,其默認值爲0

(3)       該變量在本文件內從定義開始到文件結束可見

 二、       定義局部靜態變量:在局部靜態變量前面加上關鍵字static,該局部變量便成了靜態局部變量。靜態局部變量有以下特點:

(1)       該變量在全局數據區分配內存

(2)       如果不顯示初始化,那麼將被隱式初始化爲0

(3)       它始終駐留在全局數據區,直到程序運行結束

(4)       其作用域爲局部作用域,當定義它的函數或語句塊結束時,其作用域隨之結束。

  三、       定義靜態函數:在函數的返回類型加上static關鍵字,函數即被定義成靜態函數。靜態函數有以下特點:

(1)       靜態函數只能在本源文件中使用

(2)       在文件作用域中聲明的inline函數默認爲static

                說明:靜態函數只是一個普通的全局函數,只不過受static限制,他只能在文件坐在的編譯單位內使用,不能呢個在其他編譯單位內使用。

在C++語言中新增了兩種作用:定義靜態數據成員或靜態函數成員

  一,       定義靜態數據成員。靜態數據成員有如下特點:

(1)       內存分配:在程序的全局數據區分配

(2)       初始化和定義:靜態數據成員定義時要分配空間,所以不能在類聲明中初始化

  二,       靜態成員函數。靜態成員函數與類相聯繫,不與類的對象相聯繫。靜態成員函數不能訪問非靜態數據成員。原因很簡單,非靜態數據成員屬於特定的類實例,靜態成員函數主要用於對靜態數據成員的操作。

(1)       靜態成員函數沒有this指針。


轉自:http://blog.csdn.net/leo115/article/details/8085414 與原文有出入的地方已標註。

發佈了120 篇原創文章 · 獲贊 14 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章