一:函数为什么要返回值
(1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是函数的输出
(2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)
(3)形式上来说函数被另一个函数所调用,返回值作为函数的值返回给调用这个函数的地方
总结:返回值就是给调用这个函数的地方一个值
二:main函数被谁调用
(1)main函数是特殊的,因为C语言规定了main函数是整个程序的入口,其他的函数只有直接或间接的被main函数调用才能够执行,如果没有被main函数直接或者间接的调用则这个函数在整个程序中没有起到作用
(2)mian函数从某种角度代表了当前这个程序,或者说代表了整个程序。mian函数的开始意味着真个程序的开始,mian函数的结束返回意味整个程序的结束
(3)谁执行了这个程序,谁就调用了mian函数
三:linux下一个程序执行的本质
(1)表面上来看,linux在命令行中使用./xxx命令去执行一个可执行程序
(2)可以通过一个shell脚本来执行这个程序
(3)可以在程序中调用执行一个程序(fork exec)
总结:有多种方法都可以执行一个程序,但是本质上是相同的。linux中一个新程序的执行本质上是一个进程的创建、加载、运行、消亡。linux中执行一个程序其实就是创建一个新进程然后把这个程序丢进这个进程中去执行直到结束
分享:命令行本身就是一个进程,在命令行底下去,其实这个新程序是作为命令行的一个子进程来执行的
四:实践获取main函数的返回值
(1)用shell脚本执行程序可以获取程序的返回值 并且打印出来
(2)linux shell中用$?这个符号来存储和表示上一个程序的执行结果
步骤:创建一个.c文件和一个.sh的shell脚本文件 -> 编译链接创建的.c源文件 -> 执行链接后的程序 -> 在终端使用source 4.8.2.shell.sh (4.8.2.shell.sh 是shell脚本文件的名字) ->就可以看到结果了
//创建的.c源文件
#include <stdio.h>
int main(void)
{
return 0; //也可以改成其他数值比如124
}
//创建的.sh源文件
#!/bin/bash
echo $?
使用gcc 4.8.2.main.c 命令编译链接文件
使用./a.out 命令 执行程序
使用source 4.8.2.shell.sh 命令执行shell脚本
下一行就是执行结果:0
将返回值改为127
结果: