main函数详解

c语言main函数正确写法:

int main(void)

int main(int argc, char  **argv)

int main(int argc, char *argv[ ])

main函数的返回值

       函数在设计的时候设计了参数和返回值,参数是函数的输入,返回值是函数的输出。函数的额本质是一段代码,一个数据处理器。因为函数需要对外输出数据(实际上是函数运行的一些结果值),因此函数需要返回值。

从形式上来说,函数被另一个函数所调用,返回值作为函数表达式的值返回给调用函数的地方。

int sum (int a, int b)
{
    return a + b;
}
void main(void)

{
int a = 1, b = 2, c = 3;
a = sum(b , c);
printf("a = %d\n,a");
}

       这里的sum函数就可以把a和b的值加起来。在main函数中调用了sum函数,这里的sum函数作为一个值被main函数所调用。

       函数的返回值就是调用给它的人返回一个值。

问题:main函数被谁调用呢

       main函数是特殊的,首先这个名字是特殊的。因为c语言规定了main函数是整个函数的入口,是第一个被执行的函数。而其他的函数被main函数直接或间接调用才能被执行,如果没有main函数的直接/间接的调用,那么这个函数在整个程序中是没有用的。

       main从某种角度来讲代表了当前这个函数。main函数的执行代表着整个函数开始执行,main函数的结束返回一味着整个程序的结束

       谁执行了这个这个程序,就是谁调用了main函数。(比如当我们在Linux下选择执行a.out,那么就开始执行了这个程序)

在Linux下一个新程序执行的本质

从表面上来看,Linux在命令行下去./XXX来执行一个可执行程序

还可以通过shell脚本来调用执行一个程序

还可以在程序中去调用执行一个程序(可以fork创建一个子进程,然后用 exec 来执行它)

上面这几种方法都可以在Linux下执行一个程序,但是其本质是相同的。一个新程序的执行本质上是一个进程的创建、加载、运行、消亡。在Linux下执行一个程序其实就是创建一个新的进程然后把这个程序丢进这个进程中去执行直到结束。在Linux中一个新进程都是被他的父进程fork出来的。

小总结:Linux命令行本身就是一个进程,在命令行中去执行一个可执行程序,其实这个新进程是作为命令行进程的一个子进程去执行的。一个程序被他的父进程所调用。而main函数返回给调用这个函数的父进程。父进程调用子进程执行一个函数,然后子进程执行完之后通过main函数的返回值给父进程一个答复(一般是表示子进程的任务执行结果是完成还是发生错误;0表示执行成功)

代码验证:

首先创建一个.c文件

#include <stdio.h>

int main()
{
	
	return 0;
}

然后再创建一个shell脚本文件:return.sh

#!/bin/sh

./a.out
echo $?

gcc编译一开始创建的.c文件,然后  source return.sh执行脚本文件。可以看出c文件的返回值为0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值