• 带参数的main函数


    带参数的main函数

    int main(int argc,char **argv) 

    或int main(int argc,char *argv[]) 

    /*解析

    依据《C程序设计语言(第二版.新版)》的讲述:
    第一个参数(习惯上称为argc,用于参数计数)的值表示运行程序时,命令行中参数的数目;
    第二个参数(称为argv,用于参数的向量)是一个指向字符串数组的指针,其中每个字符串对应一个参数。

    int argc, char **argv 用于运行时,把命令行参数传入主程序。

    argc -- 命令行参数总个数,包括 可执行程序名。

    argv[i] -- 第 i 个参数。

    argv[0] -- 可执行程序名。

    */


    ANSI-C(C89/C99)的话main()函数有2种主要形式。 

    (1) int main(void) 
    (2) int main(int argc, char *argv[]) 或者int main(int argc, char **argv) 

    argv[argc]放空指针(NULL指针)。 
    argc和argv可以用别名。 

    另外,还有一种受系统限制的形式: 
    int main(int argc, char *argv[], char *envp[]) 
    前两个参数同(2),第三个参数envp[]存放环境变量。 

    另外,搜集了一下C和C++中常见的几种形式: 

    复制代码
    (1) main() 
    (2) int main() 
    (3) int main(void) 
    (4) int main(int, char**) 
    (5) int main(int, char*[]) 
    (6) int main(int argc, char **argv) 
    (7) int main(int argc, char *argv[]) 
    (8) int main( int argc, char *argv[], char*envp[]) 
    (9) void main(void) 
    复制代码

    (1)是(3)的简写。不推荐使用。 
    (2)是(3)的简写。在C++中是正确的形式。 
    (3)在C和C++中都是正确的形式。推荐使用。(还有缺省int的main(void)形式)。 
    (4)和(5)是不用参数时的一种写法。编译器级别高时会警告。不推荐使用。 
    (6)是(7)的另外写法。两种都可以,凭个人爱好。 
    (7)是带参数的正确的形式。推荐使用。 
    (8)是一种很少用的写法,且受系统限制。 
    (9)一般不认为是正确的写法。但是在嵌入式系统中有使用(包括void main()形式)

    举例说明:

     1 #include <iostream.h>
     2 
     3  
     4 int main(int argc,char *argv[])
     5 {
     6        for(inti=0;i<argc;i++)
     7        {
     8               cout<<argv[i]<<'	';                 
     9     }
    10        return0;
    11 }
    // 例如运行:
    
    abc.exe
    
    argc 等于 1, argv[0] 是 "abc.exe"
    
    
    // 例如运行:
    
    rec.exe  4  5.2
    
    argc 等于 3, argv[0] 是 "rec.exe", argv[1] 是 "4", argv[2] 是 "5.2".
    
    主函数里若有:
    
    int x;
    
    float y;
    
    char s[80];
    
    strcpy(s,argv[0]);  // 程序名存入 了 s
    
    sscanf(argv[1],"%d",&x);  // x 得到数值4
    
    sscanf(argv[2],"%f",&y);  // y 得到数值 5.2
  • 相关阅读:
    关于 Uboot 中有趣的 0xdeadbeef 填充
    举例分析 Makefile 中的 filter 与 filter-out 函数
    java时间"yyyy-mm-dd HH:mm:ss"转成Date
    mysql 5.8 查询最新一条数据
    mybatis 打印SQL
    mybatis动态sql中的trim标签的使用
    Mybatis 动态 SQL
    Linux mysql启动与关闭
    maven 添加自己下载的jar包到本地仓库
    centos 安装java1.8
  • 原文地址:https://www.cnblogs.com/xymqx/p/3362107.html
Copyright © 2020-2023  润新知