(以下代码全都在linux gcc上运行)
在C语言编程中,函数非常常见。main()也是一种函数,而且C程序总是从main函数开始执行。为什么呢?
来看《UNIX环境高级编程》中的一段话:
内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址—这是由连接编辑器设置的,而连接编辑器则由C编译器调用。
看不懂的话,首先记住main()是程序执行的入口就行了。
许多函数都是有返回值,有参数的。比如:
int func(int a);
那么,main函数有没有参数呢,许多时候我们都是把它当做无参数函数来使用的。
#include<stdio.h> int main() { printf("Hello World!"); return 0; }
这是我们大多数人入手的第一个函数,这样子写是完全可以的,没有错误,可以运行。
但是,其实main()函数更其它函数一样也都是有爹有妈(参数)的。因为它也是一个函数啊!
main函数的原型是:
int main(int argc,char *argv[])或者int main(int argc,char**argv)
其中,argc是命令行参数的个数,argv是指向参数的各个指针所构成的数组。一言以避之,就是argc表示参数的个数包括执行文件名;而argv来存放参数。这样有可能不直观,让我们来看一段代码:
#include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(int argc,char* argv[]) { int i=0; for(i=0;i<argc;i++) { printf("argv[%d]: %s ",i,argv[i]); } exit(0); }
输入:./hello
输出:argv[0]: ./hello
这就说明当在命令行只输入:./hello这一个参数时,argc为1。并且./hello存储在argv[0]中,这里就可以看出argv就相当于一个二维数组。
当在命令行多输入几个参数时:
输入:./hello hello1 hello2 hello3
输出:
argv[0]: ./hello
argv[1]: hello1
argv[2]: hello2
argv[3]: hello3
现在应该就明了了,但这只是一个初步的了解,关于它还会有更深入的应用。后面在代码中遇到再看吧。
版权声明:本文为博主原创文章,未经博主允许不得转载。