頭條資訊 - 為您提供最新最全的新聞資訊,每日實時更新

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

科技數碼 程序員無言

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

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

goto關鍵字基礎知識

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

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

使用注意點:

goto label;後面有分號。

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

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

label的作用域在函數內部,不同函數之間可以定義相同的label。

goto關鍵字的爭議

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

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

尤其是嵌套層數更多的情況下,使用goto做為跳轉更為簡單,不信你看:

所以goto語句還是一個非常有潛力的關鍵字,對於設計巧妙高效的算法會非常有用!所以個人覺得只要對goto語句的使用加以管束為我們開發服務,這未嘗不是一件好事。

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

Linux中的goto

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

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

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

C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?

 尾言

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

轉載請超鏈接註明:頭條資訊 » C/C+編程筆記:C語言 goto 語句,為什麼老師反覆強調不能用?
免責聲明
    :非本網註明原創的信息,皆為程序自動獲取互聯網,目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責;如此頁面有侵犯到您的權益,請給站長發送郵件,並提供相關證明(版權證明、身份證正反面、侵權鏈接),站長將在收到郵件24小時內刪除。
加載中...