C語言 static 解讀

2022-07-29 09:30:13 字數 850 閱讀 7317

摘要:

static  (靜態),在c語言中主要用法:修飾區域性變數 ,修飾函式和全域性變數

一,修飾區域性變數

static修飾區域性變數時該變數是存放在被儲存在全域性儲存區里(靜態儲存區),下次呼叫的時候仍舊保持原來的值與堆疊變數不同,變數前使用static是告知編譯器,此變數僅在變數的作用範圍內有效。

static區域性變數初次定義時就要初始化,且只能初始化一次。如果在定義的時候不初始化,編譯器就會自動賦值為0;(也就是說如果重複呼叫同乙個函式,在第二次呼叫時,就不會再執行static區域性變數初始化那句話 了)

voidstaticlocalvar()

intmain()

注意事項:

1. 「記憶性」, 程式執行很重要的一點就是可重複性, 而static變數的」記憶性」破壞了這種可重複性, 造成不同時刻至執行的結果可能不同.

2. 「生存期」全域性性和唯一性. 普通的local變數的儲存空間分配在stack上, 因此每次呼叫函式時, 分配的空間都可能不一樣, 而static具有全域性唯一性的特點, 每次呼叫時, 都指向同一塊記憶體, 這就造成乙個很重要的問題 ---- 不可重入性

二、修飾全域性變數或者函式

為了限制該全域性變數或者函式的作用域僅限於本檔案,又稱為內部函式。對於外部(全域性)變數, 不論是否有static限制, 它的儲存區域都是在靜態儲存區, 都是全域性的. 此時的static只是起作用域限制作用, 限定作用域在本模組(文)內部.

使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名。

static從新解讀

1.static是靜態資源,屬於類,即就是所有物件共享的資源。儲存位置分開與每個類中的方法區裡面。因為靜態資源先載入,而物件是後載入的,只有new了才有。當靜態資源想獲取物件的資源時找不到,因為物件還沒有new出來,所以靜態資源肯定沒有辦法呼叫物件。而物件確可以呼叫靜態資源。2.靜態資源的分類?靜態...

C語言static詳解

static作用 修飾函式 區域性變數 全域性變數 在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時...

c語言static用法

c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。4 棧 增長方向...