C语言之main函数传参

1:为什么需要给main函数传参

首先要明白一点,给mian函数传参不是必须的,但是有时候我们需要通过给main函数不同的参数来得到的不同的结果,比如我们希望main函数中某个变量的值为0时执行子函数A,该变量值为1时执行子函数B,那么这个时候就可以通过给main函数传参来实现,mian函数传参格式如下:

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

int main(int argc , char **argv)

参数解释:

argc:int类型的参数,表示给mian函数传递了多少个参数

argv 一个字符数组(或者是二重指针),这个数组用来存放多个字符串,每个字符串就是我们给main函数传递的一个参数,需要注意的是我们./a.out执行这个程序时也算是给main函数传递了一个参数

2:谁给main函数传参

在普通的函数a中,它里面的参数是由调用函数a的函数b传递的,同样的,main函数的传参也是有调用main函数的“函数”给main函数传参的,但是我们知道,main函数是一个程序的入口函数,所以给main函数传参的是调用这个程序的一个程序,也就是main函数所在的父进程,并且由这个父进程接受main函数的返回值。

3:main函数传参的本质

程序调用有各种方法但是本质上都是父进程fork一个子进程,然后子进程和一个程序绑定起来去执行(exec函数族),我们在exec的时候可以给他同时传参。程序调用时可以被传参(也就是main的传参)是操作系统层面的支持完成的。举个简单的例子,当我们在控制台下面输入./a.out去执行一个程序的时候,其本质是控制台进程创建了一个子进程去调用我们./a.out这个可执行程序,并负责给这个程序的入口函数也就是main函数传参,并接收其返回值。

相关推荐