重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1:为什么需要给main函数传参
成都创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为汾西企业提供专业的成都网站制作、成都做网站,汾西网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
首先要明白一点,给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函数传参,并接收其返回值。