goto語句為什么要少用 C語言中的goto語句。為什么老師反復(fù)強(qiáng)調(diào)不能用?
C語言中的goto語句。為什么老師反復(fù)強(qiáng)調(diào)不能用?談goto色變,主要是goto太自由了,甚至比匯編語言的jump更自由,jump還要考慮長地址短地址等跳轉(zhuǎn),而goto根本沒有任何限制,他可以直接從函
C語言中的goto語句。為什么老師反復(fù)強(qiáng)調(diào)不能用?
談goto色變,主要是goto太自由了,甚至比匯編語言的jump更自由,jump還要考慮長地址短地址等跳轉(zhuǎn),而goto根本沒有任何限制,他可以直接從函數(shù)內(nèi)部調(diào)到函數(shù)外部甚至其它函數(shù)的位置。這就牽扯到一個(gè)問題,我們都知道函數(shù)調(diào)用是保護(hù)當(dāng)前上下文,也是當(dāng)前執(zhí)行堆棧和寄存器,一旦進(jìn)入被調(diào)用函數(shù)的內(nèi)部,堆棧和寄存器就全變了,如果函數(shù)內(nèi)部再用goto到其它地方函數(shù)不再返回,程序肯定就全亂了,而且導(dǎo)致內(nèi)存泄露。所以,使用goto必須要加限制條件1.函數(shù)內(nèi)部goto只能goto到函數(shù)內(nèi)部,保證函數(shù)能夠返回到被調(diào)用的2.中斷內(nèi)部用goto也是一樣,goto必須要能夠保證中斷正常返回,不然也會導(dǎo)致中斷異常??偨Y(jié),goto不推薦使用的原因主要是它可以不受任何條件限制,跳轉(zhuǎn)到你想要去執(zhí)行的地方,過于自由,但是是好事還是壞事取決于程序開發(fā)人員的設(shè)計(jì)是不是考慮得完善,是不是會導(dǎo)致這樣那樣的問題。
寫程序?yàn)槭裁床恢鲝堄胓oto語句?
使用goto語句 會造成程序邏輯比較混亂 不利于后期的運(yùn)維,并卻大大降低了代碼的可讀性