局部變量、全局變量、自動變量、靜態(tài)變量

變量從變量值存在的空間角度(作用域)可以分為局部變量全局變量,從時間角度(存儲器)可以分為靜態(tài)存儲動態(tài)存儲。

局部變量

  • 聲明在函數(shù)內(nèi)。
  • 只有在函數(shù)運行時才會存在。

全局變量

  • 聲明在函數(shù)外。
  • 任何函數(shù)都可以在任意時刻訪問。

自動變量

  • 自動變量是動態(tài)存儲方式。
  • 一般以數(shù)據(jù)類型加上變量名的方式定義變量得到的是自動變量(默認(rèn) auto 關(guān)鍵字)。
  • 自動變量的生命周期是由函數(shù)的生命周期所決定,即函數(shù)執(zhí)行完畢自動變量便銷毀。
  • 自動變量包括函數(shù)形參和非static局部變量。
- 動態(tài)分配存儲空間,存儲在動態(tài)存儲區(qū)中。
- 只在定義它們的時候才創(chuàng)建,在定義它們的函數(shù)返回時系統(tǒng)回收變量所占存儲空間。對這些變量存儲空間的分配和回收是由系統(tǒng)自動完成的。

靜態(tài)變量(static 變量)

  • 靜態(tài)變量是靜態(tài)存儲方式。
  • 定義變量時,在數(shù)據(jù)類型之前加上 static 得到的便是靜態(tài)變量。
  • 靜態(tài)變量的生命周期是由整個程序所決定,即程序執(zhí)行完畢時靜態(tài)變量才銷毀。因為靜態(tài)變量儲存在靜態(tài)數(shù)據(jù)區(qū),而函數(shù)是儲存在中,函數(shù)執(zhí)行完畢后棧銷毀,不會影響到靜態(tài)變量的值。

總結(jié)

1.定義局部變量時沒有static,是自動變量;
2.定義局部變量時加static,是靜態(tài)變量。局部靜態(tài)變量的初始化語句在第一次進(jìn)入該block時執(zhí)行一次,以后再進(jìn)入不再執(zhí)行該初始化語句;
3.全局變量是靜態(tài)變量(無論有沒有加static);
4.定義全局變量時加static,是限制它不會被別的文件引用;
5.定義局部自動變量時,若沒有初始化,則它的初始值是不確定的;定義靜態(tài)變量(全局變量、局部靜態(tài)變量)沒有初始化,則其初始值為0.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容