C/C++編程筆記:C語言的 goto 語句,爲何老師反覆強調不能用?

C語言中相對比較冷門的知識關鍵字goto!算法

goto關鍵字基礎知識

關鍵字goto表示無條件跳轉的意思,相似彙編中的jump指令,在C語言中的使用格式是:goto label,表示跳轉到label的位置,而且咱們的label通常都寫在語句的開頭,寫成label:的形式。以下面程序案例:編程

使用注意點:微信

goto label;後面有分號。函數

goto只能在函數內部無條件跳轉,不能從一個函數跳轉到另一個函數。學習

label:的標識在使用goto語句的先後都可,不遵循先定義後使用。設計

label的做用域在函數內部,不一樣函數之間能夠定義相同的label。3d

goto關鍵字的爭議

對於goto的使用C語言界算是爭議不斷,而且大部分大學C語言老師在講到到goto這關鍵字的時候通常都會叫你們慎用goto關鍵字。既然goto語句C語言標準中定義了,有句話說得好,"存在即合理"。你們不濫用便可。goto關鍵字很是的靈活,其實goto自己的功能是很是簡單的,就是一個跳轉到所定義的標籤label位置,靈活的地,例以下代碼:視頻

尤爲是嵌套層數更多的狀況下,使用goto作爲跳轉更爲簡單,不信你看:blog

因此goto語句仍是一個很是有潛力的關鍵字,對於設計巧妙高效的算法會很是有用!因此我的以爲只要對goto語句的使用加以管束爲咱們開發服務,這何嘗不是一件好事。教程

Linux中的goto

讀過Linux相關代碼的小夥伴會發現goto語句的使用無處不在,這裏我複製部分代碼來欣賞一下,更多的妙用你們能夠自行閱讀Linux內核源碼。

goto不能釋放內存,可是利用goto語句可使程序嚴謹,你仔細看看上面的例子,用了goto,不論程序走什麼分支,分配了的內存都獲得了釋放。若是直接return,那麼前面分配的空間就在沒釋放就退出程序了。

尾言

存在便是合理,慎用不是禁用!

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!

C語言C++編程學習交流圈子,QQ羣【757874045點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

C語言編程學習軟件

C語言學習視頻

相關文章
相關標籤/搜索