C語(yǔ)言中static和extern的區(qū)別介紹
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
一、在C中,static主要定義全局靜態(tài)變量、定義局部靜態(tài)變量、定義靜態(tài)函數(shù)。
1、定義全局靜態(tài)變量:在全局變量前面加上關(guān)鍵字static,該全局變量變成了全局靜態(tài)變量。全局靜態(tài)變量有以下特點(diǎn)。
a.在全局區(qū)分配內(nèi)存。
b.如果沒(méi)有初始化,其默認(rèn)值為0.
c.該變量在本文件內(nèi)從定義開始到文件結(jié)束可見。
2、定義局部靜態(tài)變量:在局部變量前面加上關(guān)鍵字static,其特點(diǎn)如下:
a.該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存。
b.它始終駐留在全局?jǐn)?shù)據(jù)區(qū),直到程序運(yùn)行結(jié)束。
c. 其作用域?yàn)榫植孔饔糜颍?dāng)定義它的函數(shù)或語(yǔ)句塊結(jié)束時(shí),其作用域隨之結(jié)束。
3、定義靜態(tài)函數(shù):在函數(shù)返回類型前加上static關(guān)鍵字,函數(shù)即被定義為靜態(tài)函數(shù),其特點(diǎn)如下:
a.靜態(tài)函數(shù)只能在本源文件中使用
b.在文件作用域中聲明的inline函數(shù)默認(rèn)為static類型
二、在C++中新增了兩種作用:定義靜態(tài)數(shù)據(jù)成員或靜態(tài)函數(shù)成員。
定義靜態(tài)數(shù)據(jù)成員。
a.內(nèi)存分配:靜態(tài)數(shù)據(jù)成員在程序的全局?jǐn)?shù)據(jù)去分配。
b.初始化和定義:靜態(tài)數(shù)據(jù)成員定義時(shí)要分配空間,所以不能在類聲明中定義。
靜態(tài)數(shù)據(jù)成員因?yàn)槌绦蛞蚤_始運(yùn)行就必須存在,所以其初始化的最佳位置在類的內(nèi)部,public、protected、private關(guān)鍵字對(duì)它的限定和普通數(shù)據(jù)成員一樣,因?yàn)槠淇臻g在全局?jǐn)?shù)據(jù)分配,屬于所有本類的對(duì)象共享。它不屬于特定的類對(duì)象,在沒(méi)產(chǎn)生類對(duì)象時(shí),其作用域可見,即沒(méi)有產(chǎn)生類的實(shí)例時(shí),就可以操作它了。
靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)與類相聯(lián)系,不與類的對(duì)象相聯(lián)系。靜態(tài)成員函數(shù)不能訪問(wèn)非靜態(tài)數(shù)據(jù)成員。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%