全局變量和局部變量相關(guān)

局部變量和全局變量
  • 局部變量
    • 概念:局部變量就是定義在函數(shù)筒饰,代碼塊和函數(shù)形參列表中的變量,我們稱之為局部變量
    • 作用范圍:從定義的那一行開始一直到大括號(hào)或者遇到return為止
    • 特點(diǎn)
      • 相同作用域范圍內(nèi)不能出現(xiàn)同名的局部變量
      • 不同作用域范圍內(nèi)出現(xiàn)同名的局部變量竟纳,內(nèi)部的局部變量會(huì)覆蓋外部的局部變量
    • 注意:局部變量沒有固定的初始化值视哑,如果沒有對(duì)局部變量進(jìn)行初始化葬项,那么局部變量中是一些隨機(jī)值闪萄,所以在開發(fā)中千萬(wàn)不要使用未初始化的局部變量
    • 存儲(chǔ)位置:局部變量存儲(chǔ)在棧中梧却,當(dāng)作用域結(jié)束系統(tǒng)會(huì)自動(dòng)釋放棧中的局部變量
  • 全局變量
    • 概念:寫在函數(shù)、代碼塊败去、形參列表外的變量放航,我們稱之為全局變量
    • 特點(diǎn):
      • 全局變量和局部變量可以同名
      • 如果存在和全局變量同名的局部變量,那么局部變量會(huì)覆蓋全局變量
    • 注意
      • 如果全局變量沒有進(jìn)行初始化圆裕,那么系統(tǒng)默認(rèn)會(huì)將全局變量初始化為0
    • 存儲(chǔ)位置:全局變量存儲(chǔ)在靜態(tài)去中广鳍,他會(huì)隨著程序的啟動(dòng)而創(chuàng)建,隨著程序的結(jié)束而結(jié)束
內(nèi)部全局變量和外部全局變量
  • 全局變量分兩種

    • 外部全局變量吓妆,默認(rèn)情況下所有的全局變量都是外部全局變量
      • 可以被其他文件訪問的全局變量我們稱之為外部全局變量
      • 特點(diǎn):
        • 可以定義同名的外部全局變量
        • 多個(gè)同名的外部全局變量指向同一塊存儲(chǔ)空間
    • 內(nèi)部全局變量赊时,只要給全局變量加上static關(guān)鍵字就是內(nèi)部全局變量
      • 只能被當(dāng)前文件訪問的全局變量,我們稱之為內(nèi)部全局變量
      • 特點(diǎn):
        • 也可以定義多個(gè)同名的內(nèi)部全局變量
        • 多個(gè)同名的內(nèi)部全局變量耿战,如果不在同一個(gè)文件中蛋叼,那么指向不同的存儲(chǔ)空間
  • 如果有外部全局變量和內(nèi)部全部變量焊傅,那么會(huì)優(yōu)先訪問內(nèi)部全局變量

  • extern:關(guān)鍵字用來(lái)修飾全局變量剂陡,代表聲明一個(gè)全局變量

    • 聲明全局變量和聲明函數(shù)一樣狈涮,僅僅是告訴系統(tǒng)我們有這么一個(gè)全局變量,但是不會(huì)在內(nèi)存中開辟存儲(chǔ)空間
    • 聲明只需要在使用變量之前聲明就可以了,別的文件中定義的全部變量鸭栖,可以在另一個(gè)文件中使用extern聲明歌馍,之后就可以使用了
  • static:

    • 用于定義一個(gè)內(nèi)部全局變量,聲明不會(huì)開辟存儲(chǔ)空間晕鹊,但是定義會(huì)開辟存儲(chǔ)空間
static對(duì)局部變量的作用
  • 當(dāng)用static來(lái)修飾局部變量松却,那么會(huì)延長(zhǎng)局部變量的生命周期,并且會(huì)更改局部變量存儲(chǔ)的位置溅话,將局部變量從棧轉(zhuǎn)移到靜態(tài)區(qū)中
  • 只要使用static修飾局部變量晓锻,當(dāng)執(zhí)行到定義局部變量的代碼就會(huì)分配存儲(chǔ)空間,但是只有程序結(jié)束才會(huì)釋放該存儲(chǔ)空間
  • 應(yīng)用場(chǎng)景
    • 當(dāng)某個(gè)方法的調(diào)用頻露非常高飞几,而該方法中有些變量的值是固定不變的砚哆,使用static修改不變的變量,讓該變只分配一次存儲(chǔ)空間屑墨,這樣可以提高程序的效率和性能
static 和 extern對(duì)函數(shù)的作用(了解)
  • 函數(shù)也分為內(nèi)部函數(shù)和外部函數(shù)
  • 默認(rèn)情況下所有函數(shù)都是外部函數(shù)
  • 外部函數(shù):可以被其他文件訪問的函數(shù)稱之為外部函數(shù)
  • 內(nèi)部函數(shù):只能在當(dāng)前文件中訪問的函數(shù)稱之為內(nèi)部函數(shù)
// 聲明內(nèi)部函數(shù)一般用于內(nèi)部函數(shù)定義在后面躁锁,而在定義之前想使用函數(shù)
static void sum();

int main(int argc, const char * argv[]) {
    sum();
    return 0;
}
// 只要在函數(shù)的返回值前面加上static就可以讓函數(shù)變?yōu)閮?nèi)部函數(shù),其他文件就不能訪問了
// 如果static寫在函數(shù)的實(shí)現(xiàn)中卵史,代表定義一個(gè)內(nèi)部函數(shù)
// 如果static寫在函數(shù)的聲明中战转,代表聲明一個(gè)內(nèi)部函數(shù)
static void sum()
{
    printf("123\n");
}

// 只要在函數(shù)的返回值前面加上extern就可以讓函數(shù)變?yōu)橥獠亢瘮?shù),因?yàn)槟J(rèn)就是外部函數(shù)以躯,所以開發(fā)中extern不用寫
// 如果extern寫在函數(shù)的實(shí)現(xiàn)中槐秧,代表定義一個(gè)外部函數(shù)
// 如果extern寫在函數(shù)的聲明中,代表聲明一個(gè)外部函數(shù)
extern void sum()
{
    printf("123\n");
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忧设,一起剝皮案震驚了整個(gè)濱河市色鸳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌见转,老刑警劉巖命雀,帶你破解...
    沈念sama閱讀 212,185評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斩箫,居然都是意外死亡吏砂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門乘客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狐血,“玉大人,你說我怎么就攤上這事易核⌒僦” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)缀匕。 經(jīng)常有香客問我纳决,道長(zhǎng),這世上最難降的妖魔是什么乡小? 我笑而不...
    開封第一講書人閱讀 56,564評(píng)論 1 284
  • 正文 為了忘掉前任阔加,我火速辦了婚禮,結(jié)果婚禮上满钟,老公的妹妹穿的比我還像新娘胜榔。我一直安慰自己,他們只是感情好湃番,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,681評(píng)論 6 386
  • 文/花漫 我一把揭開白布夭织。 她就那樣靜靜地躺著,像睡著了一般吠撮。 火紅的嫁衣襯著肌膚如雪摔癣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,874評(píng)論 1 290
  • 那天纬向,我揣著相機(jī)與錄音择浊,去河邊找鬼。 笑死逾条,一個(gè)胖子當(dāng)著我的面吹牛琢岩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播师脂,決...
    沈念sama閱讀 39,025評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼担孔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吃警?” 一聲冷哼從身側(cè)響起糕篇,我...
    開封第一講書人閱讀 37,761評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酌心,沒想到半個(gè)月后拌消,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,217評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡安券,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,545評(píng)論 2 327
  • 正文 我和宋清朗相戀三年墩崩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侯勉。...
    茶點(diǎn)故事閱讀 38,694評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹦筹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出址貌,到底是詐尸還是另有隱情铐拐,我是刑警寧澤徘键,帶...
    沈念sama閱讀 34,351評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站遍蟋,受9級(jí)特大地震影響吹害,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匿值,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,988評(píng)論 3 315
  • 文/蒙蒙 一赠制、第九天 我趴在偏房一處隱蔽的房頂上張望赂摆。 院中可真熱鬧挟憔,春花似錦、人聲如沸烟号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)汪拥。三九已至达传,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迫筑,已是汗流浹背宪赶。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脯燃,地道東北人搂妻。 一個(gè)月前我還...
    沈念sama閱讀 46,427評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辕棚,于是被迫代替她去往敵國(guó)和親欲主。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,580評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容