
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3.2 实践步骤
我们将编写两个不同版本的程序,以展示两种不同的程序退出方法。
1.首先,我们使用return语句编写第一个版本的程序,该方式在前面的内容中已经进行过展示。但是这一次,我们将在函数中使用return返回,一直返回到main(),最终返回到父进程,也就是shell。将下面的程序保存到一个名为functions_ver1.c的文件中。下面的代码中,所有的return语句已被突出显示:


2.编译程序:

3.运行程序。尝试跟踪整个过程,查看哪些函数被调用了并返回到了其他哪些函数:


4.检查程序的返回值:

5.现在,我们重写前面的程序,改为在函数内部使用exit()。一旦exit()被调用,程序将以指定的值退出。如果在另一个函数中调用了exit(),该函数将不会返回到main()。将下面的程序保存到一个新文件中,并将文件命名为functions_ver2.c。在以下代码中,所有的return语句和exit语句已被突出显示:


6.编译这个版本:

7.运行该程序,看看会发生什么(并和上一个程序的输出进行比较):

8.检查程序的返回值:
