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

2021-07-14 23:43:46 字數 1050 閱讀 5150

ps:本人親測,阿里雲2核4g5m的伺服器價效比很高,新使用者一塊多一天,老使用者三塊多一天,最高可以買三年,感興趣的可以戳一下:阿里雲折扣伺服器

全域性變數作用域為定義處至原始檔結尾,儲存時期為定義後為其分配記憶體,程式退出後釋放記憶體;

區域性變數作用域為區域性,儲存時期為定義後分配記憶體,退出作用域後釋放記憶體;

全域性變數預設為靜態變數,區域性變數預設為自動變數,也可以宣告為靜態變數,靜態變數和自動變數的區別是儲存時期的區別,靜態變數的儲存時期是記憶體空間在程式執行期間都存在,程式退出才被釋放;自動變數記憶體空間在作用域內才存在,退出作用域後就被釋放。

靜態區域性變數的特點:

1.不會隨著函式的呼叫和退出而發生變化,不過,儘管該變數還繼續存在,但不能使用它。倘若再次呼叫定義它的函式時,它又可繼續使用,而且儲存了前次被呼叫後留下的值

2.靜態區域性變數只會初始化一次

3.靜態屬性只能被初始化為乙個字元值或乙個常量,不能使用表示式。即使區域性靜態變數定義時沒有賦初值,系統會自動賦初值0(對數值型變數)或空字元(對字元變數);靜態變數的初始值為0。

4.當多次呼叫乙個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的***,因此仍以採用區域性靜態變數為宜。

**如下:

function test()

test(); //2

test(); //3

test(); //4

echo $var; //報錯:notice: undefined variable: var

關於靜態全域性變數:

**如下:

//全域性變數本身就是靜態儲存方式,所有的全域性變數都是靜態變數

function static_global()

static_global(); //1

static_global(); //2

static_global(); //3

echo $glo . '

'; //3

所以靜態全域性變數使用並不多。

靜態變數和全域性變數

靜態資料成員和靜態函式 與類本身直接相關,而不是與類的各個物件保持關聯。通過在成員的宣告之前加上關鍵字static使得其與類關聯在一起。靜態資料成員的型別可以是算術型別 常量 引用 指標 類型別等。類似的,靜態成員函式也不與任何物件繫結在一起,它們不包含 this 指標。靜態成員函式不能宣告為 co...

靜態變數和全域性變數

一 全域性變數 1 在mymethod.h中 extern qstring real db path 2 在mymethod.cpp中 必須做這一步,這一步是為變數分配空間,如果不分配空間,使用的時候編譯不過 qstring real db path 3 在需要使用的地方,include mymet...

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

儲存的地方是一樣的,不同之處在於它們的作用域不同 全域性變數基本上在程式的任何地方都能被看到 而靜態區域性變數只能在其指定的範圍內被使用 比如 int i 全域性變數 class c void main 全域性變數具有外部連線性,即同一工程中其它檔案中的也可引用。而靜態變數不具有外部連線性,即同一工...