goto是不是c語言關(guān)鍵字 C語言中的goto語句該怎么定義標(biāo)號(hào)?
C語言中的goto語句該怎么定義標(biāo)號(hào)?goto 語句標(biāo)號(hào)按標(biāo)識(shí)符規(guī)定書寫的符號(hào), 放在某一語句行的前面,標(biāo)號(hào)后加冒號(hào)(:)。語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與goto 語句配合使用。定義標(biāo)號(hào)時(shí)需要注意:1
C語言中的goto語句該怎么定義標(biāo)號(hào)?
goto 語句標(biāo)號(hào)按標(biāo)識(shí)符規(guī)定書寫的符號(hào), 放在某一語句行的前面,標(biāo)號(hào)后加冒號(hào)(:)。語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與goto 語句配合使用。定義標(biāo)號(hào)時(shí)需要注意:
1 標(biāo)號(hào)名必須是合法的C語言標(biāo)識(shí)符。即以數(shù)字,字母下劃線組成,且不能以數(shù)字開頭。另外不可以與關(guān)鍵字重名。
2 C語言不限制程序中使用標(biāo)號(hào)的次數(shù),但各標(biāo)號(hào)不得重名。goto語句通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能。在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。
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必須要能夠保證中斷正常返回,不然也會(huì)導(dǎo)致中斷異常??偨Y(jié),goto不推薦使用的原因主要是它可以不受任何條件限制,跳轉(zhuǎn)到你想要去執(zhí)行的地方,過于自由,但是是好事還是壞事取決于程序開發(fā)人員的設(shè)計(jì)是不是考慮得完善,是不是會(huì)導(dǎo)致這樣那樣的問題。
C語言goto語句的用法?
你好,我是【小綠觀電影】,很高興為你解答。
goto語句也稱為無條件轉(zhuǎn)移語句,其一般格式如下:
goto 語句標(biāo)號(hào); 其中語句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定書寫的符號(hào), 放在某一語句行的前面,標(biāo)號(hào)后加冒號(hào)(:)。語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與goto 語句配合使用。
C語言不限制程序中使用標(biāo)號(hào)的次數(shù),但各標(biāo)號(hào)不得重名。
goto語句的語義是改變程序流向, 轉(zhuǎn)去執(zhí)行語句標(biāo)號(hào)所標(biāo)識(shí)的語句。
goto語句通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能。
在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。
以下例句,當(dāng)i等于5時(shí),程序轉(zhuǎn)向stop標(biāo)簽處語句。
// Example of the goto statementvoid main(){ int i, j for ( i = 0 i < 10 i ) { printf( "Outer loop executing. i = %dn", i ) for ( j = 0 j < 3 j ) { printf( " Inner loop executing. j = %dn", j ) if ( i == 5 ) goto stop } } /* This message does not print: */ printf( "Loop exited. i = %dn", i ) stop: printf( "Jumped to stop. i = %dn", i )}更多專業(yè)的科普知識(shí),歡迎關(guān)注我。如果喜歡我的回答,也請(qǐng)給我贊或轉(zhuǎn)發(fā),你們的鼓勵(lì),是支持我寫下去的動(dòng)力,謝謝大家。