栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

main函数的两个参数:argv[],argc

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

main函数的两个参数:argv[],argc

        首先来看一段简单的代码,入门的helloworld:

#include 
#include 

int main()
{
    printf("hello world!n");
    return 0;
}

输出: hello world!

        如果把上面的代码换成下面的代码,再来看一下结果:

#include 
#include 

int main(int argc,char *argv[])
{
    printf("hello world!n");
    return 0;
}

结果是一样的:

        如果这么看的话,那这两个参数好像一点用都没有,毕竟一般来说,一个函数带参数,那总要有另一个函数调用它给它传值才对,但是main身为主函数,谁能调用它给它传值呢 ?答案要在Linux里面找。

        刚开始学C语言的时候,大部分人都是使用的Windows下的各种开发平台,比如vc++,vs,这些平台都有一个按钮,可以一键编译运行,用惯了这些按钮,初学者压根想不到可以在运行程序的时候传参数给程序,也就是说,这段代码不会再接收到来自程序员手动传入的参数,所有要用到的数据都已经在代码中定义好了,main函数在整个代码中就是老大,只有它调用别的函数、给别的函数传参的份,这个时候,main函数不带任何参数很正常。

        但如果是在Linux中编译运行代码,可没有按钮这么方便,在linux中只能手动敲指令运行程序了,例如,在我的目录下有一个已经编译好的可以直接运行的可执行文件 a.out,那么我想运行它,就只能在终端上敲 :./a.out ,这时候会显示:hello world!,代表运行成功。

        在windows里面想不到参数从哪来,在Linux中就很容易想到了吧!就是在输入运行指令的时候啦,这个时候可以多敲些字符串,这些字符串就会被 argv 接收,而你输入的字符串的总个数会被 argc 保存下来。比如:把程序改成下面这样:

#include 
#include 

int main(int argc,char *argv[])
{
    printf("hello world!nn");
    for(i=0;i

然后在运行的时候,后面随便敲几个字符串(以空格分开),像下面这样:

                ​​​​​​​        

我在后面加了三个字符串,“hhhh”,“iiiii”,“oooo”,for循环不仅把这三个字符串输出来了,还输出了运行程序的指令:./a.out。也就是说,argv会接受我在终端输入的所有字符串,这些字符串以空格分开,而,argc则接收输入字符串的个数,在这里是 4。

argv:argument vector;

argc:argument count;

 

        如果接触过Linux的指令,那对一些常用的指令,比如ls -l、cd /home....肯定有映象,在Linux中,这些指令也只不过是可执行程序而已,它们也是通过编译链接后才得到可执行文件,本质上,和上面的a.out一样,我们在用这些指令的时候,其实就是在执行这些可执行文件,上面的例子中,我传入的参数没有任何意义,但是对于Linux中的指令来说,这些参数必不可少,当你执行ls -l指令时,“-l”就是你传入的第二个参数,这个参数会被 ls 源代码中的 argv 接收,它接收到这个参数,才能知道到用户的请求,才会按照要求输出当前目录下所有目录和文件的详细信息。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510891.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号