循环结构中 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) 是等价