聊聊main函数
main
字面的意思就是主要的意思,在程序里面也是,并且更重要了,是主函数,何为主函数,就是程序运行会执行的第一个程序,意即程序的入口,如果说眼睛是心灵的窗户,那么main就是程序的大门。
在C99标准之前,main函数可以没有返回类型或者使用void,如下所示:
1 | /*beginner/main/main1.c*/ |
或者
1 | /*beginner/main/main2.c*/ |
这两个可以称为最短小精悍的程序了,不会出错,因为没有语句。
如果使用C99标准编译,就可以看到如下的警告信息:
1 | main1.c:3:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] |
警告的含义就是我们的mian函数是有血有肉的,是有正儿八经的返回值的,这个返回值的类型就是int,所以这个程序:
1 | /*beginner/main/main3.c*/ |
OK,完美编译,没有任何报错信息,不过终归看着少了点什么,是的,如果定义了返回类型,就需要有相应的返回,所以第一个标准的简单C语言函数如下所示:
1 | /*beginner/main/main4.c*/ |
main函数的形式
恩,既然写出了main函数的标准形式,这里就需要讨论一个问题,为什么有时候看到int main(),有时候又看到int main(int argc, char *argv[])呢,具体的形式如下所示:
无参数的main函数
1 | /*beginner/main/main5.c*/ |
可以看到上面这个例子,只是打印了hello world,并没有其他语句。
而下面的例子,我们看到使用到了argc和argv,所谓的形参,所以在有需要的时候才会出现这种形式,就好像是黄蓉给郭靖的几个锦囊^_^。
有参数的main函数
1 | /*beginner/main/main6.c*/ |
编译运行
直接输入make
就可以了。
1 | #beginner/main/Makefile |