int n 與 static int n 的區別

2021-09-26 21:21:23 字數 623 閱讀 2455

如下**:get_n()中定義的 int n 是區域性變數,儲存在棧中,生命週期為一次函式get_n函式的執行;

get_static_n中定義的 static int n 是靜態變數,儲存在靜態資料區,生命週期是整個程式的執行過程。

#include void get_n(void)

void get_static_n(void)

int main(void)

所以:

1、每呼叫一次get_n(),n的值都會被初始化為10(若未賦初值,其值隨機),函式return後被釋放;

2、僅在第一次呼叫get_static_n()時 n 會被初始化(若未初始化預設為0),函式return後不釋放,例子中經過第一次呼叫後,其值保持為 11 。當第二次呼叫時,static int n = 10 無效。

如下圖:

從上圖可以看出,兩個函式中的 int n 和 static int n 位址是不相同的。

以前只知道static修飾的變數會持久保持內容,卻不知其所以然,這篇blog當是記錄,錯漏之處請斧正。

SQL與NoSQL MySQL與NoSQL的融合

寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認...

指標與陣列 a與 a區別

假設宣告了乙個陣列a,則 a表示陣列a的首位址,a與 a 0 表示陣列a首元素的首位址,那麼 a 1與a 1有哪些區別呢?通過下面的實驗來說明。int i 0 int a 5 int p int a 1 for i 0 i 5 i printf a 0x p,a 0x p,a 1 0x p n a,...

apache與tomcat與weblogic對比

apache,tomcat,weblogic都是常用的中介軟體,發布 等應用都離不開這些好東東。強大程度對比apache 新手容易將apache與tomcat混亂。apache與tomcat都是同乙個公司生產的,apache是輕量級的,tomcat是企業級的。apache一般與php mysql等整...