现在的位置: 首页 > 编程语言 > 正文

main 函数的秘密

2019年03月05日 编程语言 ⁄ 共 804字 ⁄ 字号 评论关闭

这个问题在笔试和面试中很容易被问到,是很基础的知识点,所以今天将此整理出来,以便以后复习。

要点:

1、main函数也是函数,具有函数的一般属性;

2、main函数具有返回值,也具有形式参数;

3、main函数的参数,由操作系统赋值。

详细点:

其实,main函数既可以是有参函数,也可以说是无参函数。对于无参形式来讲,定义main函数时,用void替代形式参数。对于有参形式来说,就需要向其传递参数。但众所周知,其他任何函数都不能调用main函数,当然也同样无法向main函数传递参数,这说明main函数无法从程序内部获得参数值,只能从程序之外获得。

C语言规定,main函数定义形式为:

void main(int argc,char *argv[])
{
     //函数体
}

argc 接收实参的个数;argv接收各字符串 的首地址;两个形参的类型不能改变。

在没有操作系统的单片机应用程序中,main一般都没有形式参数,所以定义main函数时,参数部分采用void代替。在操作系统下,这两个形式参数就由操作系统传递而来。

在命令行状态下执行C程序经过编译连接后得到可执行文件时,输入的可执行文件名之后也可以带有若干个命令参数。执行改程序时操作系统调用main()函数,接受来的参数值作为对应形参的初值,为程序的执行创造初值条件。实参由输入的可执行文件名和其后跟的若干个字符串组成,这些字符串的长度一般不相同,其长度事先无法确定,而且实参的个数也是任意的。要满足这些要求,应该用字符指针数组做参数。C语言规定,main()函数形参是固定的,第一个形参为整形,他接受实参的个数,第二个形参为字符指针数组,他的各元素分别接受命令行输入的个字符串的首地址。

命令发出后,系统调用main()函数,先统计出参数总个数n,并将它赋给argc,并将n个实参字符串的首地址,按实参顺序分别赋给指针数组argv的各元素,然后再开始执行

main()函数的各条语句。

抱歉!评论已关闭.