循環結構中 break、continue、return 和exit() 的區別
文章目錄
- 循環結構中 break、continue、return 和exit() 的區別
- 一、break語句
- 二、continue語句
- 三、return 語句
- 四、exit() 函數
說明:本文內容參考牟海軍 著《C語言進階: 重點、難點與疑點解析》,鳴謝
一、break語句
break 主要結合 switch 語句和循環結構,主要有以下特點:
(1) 在循環結構內部執行了 break 語句,就退出該層循環, 執行下一條語句。
(2) 在多重嵌套循環中執行 break 語句,只退出其所在循環層, 外層循環不受影響,繼續循環執行。
(3) 如循環結構里有 switch 語句, switch 語句中執行 break 語句時, 僅退出 switch 語句,不會退出外面的循環結構。
二、continue語句
continue 語句較特殊的, 在循環結構主要有以下特點:
(1)它不會退出循環, 而是只結束本次循環體的執行, 所以使用 continue 時要注意。
(2) for 循環中, 首先執行表達式 1( 注意表達式 1 在整個循環中僅執行一次), 接著執行表達式 2, 如果滿足條件, 那么執行循環體, 如果在循環體中執行了 continue 語句, 那么就跳轉到表達式 3 處執行, 接下進行下一次循環, 執行表達式 2, 看是否滿足條件 ;
(3)在 while循環執行了continue 語句, 就直接跳轉到表達式處, 開始下一次的循環判斷 ;
(4)在 do while 循環體執行 continue 語句, 就跳轉到表達式處進行下一次的循環判斷,
三、return 語句
return 語句主要用在函數或循環結構中,主要有以下特點:
(1)在程序中遇到 return 語句, 那么代碼就立刻退出該函數的執行,不會執行return下面的語句, 然后返回到函數的調用處,
(2)如果是 main() 函數, 那么結束整個程序的運行。
(3)如果在函數內部使用while或do while循環語句,在循環語句內部使用return語句,也會退出函數,
四、exit() 函數
exit()實質為一個函數,表示執行返回,與 return 語句既有聯系又有區別;
區別:
(1)執行 exit() 函數意味著進程結束。
(2)調用 exit() 函數將會結束當前進程, 同時刪除子進程所占用的內存空間, 把返回信息傳給父程。 (3)當 exit() 中的參數為 0 時, 表示正常退出, 其他返回值表示非正常退出, 而 return 僅表示調用堆棧的返回, 其作用是返回函數值, 并且退出當前執行的函數體, 返回到函數的調用處,
(3)總結起來就是無論在函數中還是循環中調用exit()函數,都是終止程序運行
看個例子:
#include <stdio.h>
#include <stdlib.h>int func()
{int n = 1;printf("exit 退出函數\n");while(1){if(9==n){exit(n);}n++;}return 0;
}int main(void)
{int ret;printf(" *********\n");ret = func();printf("func 函數返回值 ret = %d\n",ret);return 0;
}
執行結果:
? ? ? ? ? ? ? ? ? ********* ?????????
exit 退出函數
結論:函數退出之后沒有執行main函數最后一條語句,符合上述特性
聯系:
(1) 在main() 函數中, return n 和 exit(n) 是等價