C語(yǔ)言-基礎(chǔ)教程-C語(yǔ)言函數(shù)的作用域規(guī)則

字號(hào):

“語(yǔ)言的作用域規(guī)則”是一組確定一部分代碼是否“可見”或可訪問(wèn)另一部分代碼和數(shù)據(jù)的規(guī)則。
    C語(yǔ)言中的每一個(gè)函數(shù)都是一個(gè)獨(dú)立的代碼塊。一個(gè)函數(shù)的代碼塊是隱藏于函數(shù)內(nèi)部的,不能被任何其它函數(shù)中的任何語(yǔ)句(除調(diào)用它的語(yǔ)句之外)所訪問(wèn)(例如,用g o t o語(yǔ)句跳轉(zhuǎn)到另一個(gè)函數(shù)內(nèi)部是不可能的)。構(gòu)成一個(gè)函數(shù)體的代碼對(duì)程序的其它部分來(lái)說(shuō)是隱蔽的,它既不能影響程序其它部分,也不受其它部分的影響。換言之,由于兩個(gè)函數(shù)有不同的作用域,定義在一個(gè)函數(shù)內(nèi)部的代碼數(shù)據(jù)無(wú)法與定義在另一個(gè)函數(shù)內(nèi)部的代碼和數(shù)據(jù)相互作用。
    C語(yǔ)言中所有的函數(shù)都處于同一作用域級(jí)別上。這就是說(shuō),把一個(gè)函數(shù)定義于另一個(gè)函數(shù)內(nèi)部是不可能的。
    4.2.1 局部變量
    在函數(shù)內(nèi)部定義的變量成為局部變量。在某些C語(yǔ)言教材中,局部變量稱為自動(dòng)變量,這就與使用可選關(guān)鍵字a u t o定義局部變量這一作法保持一致。局部變量?jī)H由其被定義的模塊內(nèi)部的語(yǔ)句所訪問(wèn)。換言之,局部變量在自己的代碼模塊之外是不可知的。切記:模塊以左花
    括號(hào)開始,以右花括號(hào)結(jié)束。
    對(duì)于局部變量,要了解的最重要的東西是:它們僅存在于被定義的當(dāng)前執(zhí)行代碼塊中,即局部變量在進(jìn)入模塊時(shí)生成,在退出模塊時(shí)消亡。
    定義局部變量的最常見的代碼塊是函數(shù)。例如,考慮下面兩個(gè)函數(shù)。
    整數(shù)變量x被定義了兩次,一次在func1()中,一次在func2()中。func1()和func2()中的x互不相關(guān)。其原因是每個(gè)x作為局部變量?jī)H在被定義的塊內(nèi)可知。