您的位置:首页 > 大数据 > 人工智能

main函数的参数(一)

2015-08-21 19:03 429 查看
(以下代码全都在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\n",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

现在应该就明了了,但这只是一个初步的了解,关于它还会有更深入的应用。后面在代码中遇到再看吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: