关于C语言main函数

什么是main

在C语言中 main函数又叫主函数,是程序启动后第一个执行的函数
在C程序中不可缺少

main函数的几种形式

  1. 没有返回值,也没有参数 (c89)

    1
    main (){ }

    通常这种写法只有旧的标准支持,使用现在的编译器则会默其返回值为int

  2. 这种声明方式不推荐,因为返回值是给系统的,返回空则系统就无法获取程序退出状态

    1
    void main () { }
  3. 虽然形参列表没有参数,但是没有声明为void,则main函数依旧可以获取参数
    程序中其他自定义函数也一样
    入参没有类型限制,也可以不传参数

    1
    int main () { }
  4. 无参,程序就无法获取命令行参数, 如果入参则会报错

    1
    int main (void) { }
  5. 两个入参,第一个参数为命令行参数个数,第二个入参为命令行参数数组
    入参的参数名可以自定义,不一定要下面示例中的名称

    1
    int main (int argv, char *argc[]) { }
  6. 三个入参

    1
    int main (int argv, char *argc[], char *envp[]) { }

    前两种参数和第五种一样,但是第三个参数通常为编译器扩展的一个参数
    但是全局变量environ可以代替参数envp的作用,获取或设置环境变量可以使用getenv或putenv,所以使用这个扩展参数其实没有必要

总结

可以看到C语言中main函数的写法有很多种,但是现在的C标准中只支持两种

正确的两种形式
1
2
3
int main (void) { }

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

至于其他的写法要么是编译器扩展写法,要么就是历史遗留问题