C語言中static和extern的區別介紹
一、在C中,static主要定義全局靜態變量、定義局部靜態變量、定義靜態函數。
1、定義全局靜態變量:在全局變量前面加上關鍵字static,該全局變量變成了全局靜態變量。全局靜態變量有以下特點。
a.在全局區分配內存。
b.如果沒有初始化,其默認值為0.
c.該變量在本文件內從定義開始到文件結束可見。
2、定義局部靜態變量:在局部變量前面加上關鍵字static,其特點如下:
a.該變量在全局數據區分配內存。
b.它始終駐留在全局數據區,直到程序運行結束。
c. 其作用域為局部作用域,當定義它的函數或語句塊結束時,其作用域隨之結束。
3、定義靜態函數:在函數返回類型前加上static關鍵字,函數即被定義為靜態函數,其特點如下:
a.靜態函數只能在本源文件中使用
b.在文件作用域中聲明的inline函數默認為static類型
二、在C++中新增了兩種作用:定義靜態數據成員或靜態函數成員。
定義靜態數據成員。
a.內存分配:靜態數據成員在程序的全局數據去分配。
b.初始化和定義:靜態數據成員定義時要分配空間,所以不能在類聲明中定義。
靜態數據成員因為程序以開始運行就必須存在,所以其初始化的最佳位置在類的內部,public、protected、private關鍵字對它的限定和普通數據成員一樣,因為其空間在全局數據分配,屬于所有本類的對象共享。它不屬于特定的類對象,在沒產生類對象時,其作用域可見,即沒有產生類的實例時,就可以操作它了。
靜態成員函數。靜態成員函數與類相聯系,不與類的對象相聯系。靜態成員函數不能訪問非靜態數據成員。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%