• main函数的参数


      在一些教材中,我们常常可以看到main函数的形式如下:int main(int argc,char* argv[]),这两个参数是干什么的呢?如何传递给main函数呢?

    1.含义

      首先必须知道,main函数是由系统调用的,在调用的同时传递参数。

      例如,在文件file1.c中,有如下内容:

    #include <stdio.h>
    
    int main(int argc,char* argv[])
    
    {
    
             printf("exe executed!\n");
    
    }

    经过编译后,在工程目录的debug文件夹下,可以得到“file1.exe”文件,我们要在DOS下执行这个文件,就要以一定的格式输入命令行,格式如下:

             命令名  参数1,参数2,……参数n

    比如,要执行上述exe文件,可以输入:

         file1 

    可以得到以下结果:

    如果我们要传递参数,则可以输入以下内容:

             file1 China BeiJing

    现在,我告诉您:

      argc的含义是argument count:它是一个int行变量,表示传递给main函数的参数数量;

      argv的含义是argument value(值):它是一个指向字符串的指针数组,每个指针元素指向各个具体的参数;

    您可以猜到argc的值和argv的值是多少了么?

    argc=3,而不是2,因为命令名“file1”也算一个参数!因此从此处也可以知道,argc是恒>=1的。

    而argv呢?看下图:

    2.用法

      既然知道了各个参数的含义,那么如何使用该参数呢?看了下面这个简单的程序您就会明白:

    #include <stdio.h>
    int main(int argc,char* argv[])
    {
        while(argc>0)
        {
            argc--;
            printf("%s\n",*argv);
            argv++;   /*指向下一条参数*/
        }
    }

    调用方法和运行结果:

    懂了吧?实际上,这两个变量的名字 实际上可以随便取的,取坐argc和argv只不过是习惯而已。

    P.S:

      为什么第二个形参参数要用指针数组?

      由于命令行中的字符串的长度事先并不知道,而且各个参数字符串的长度一般也并不相同,因此只有用指针数组能够比较好地满足上述要求,可以从这里体会指针数组的用处。

  • 相关阅读:
    【转载】MDX 去年当月值、差值、同比
    【原创】Analyzer安全性异常(应用程序视图执行安装策略不允许的操作)
    Analyzer普通用户登录不了[从网络访问此计算机]
    【转载】51CTO如何防止SQL注入的解决方法
    【转载】51CTOAndroidManifest.xml文件详解
    Eclipse插件安装方式
    Typemock揭示 安装其它三方软件可能引起冲突,那试试不安装直接引用它的DLL
    项目从VS2010 升 VS2012 遇到的代表性问题及解决
    c# comboBox模糊匹配
    sqlJDBC安装使用
  • 原文地址:https://www.cnblogs.com/BitArt/p/2811002.html
Copyright © 2020-2023  润新知