main函数传参

Posted 夏末终年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了main函数传参相关的知识,希望对你有一定的参考价值。

  在有些C语言程序中,我们会看到main函数有如下的写法:

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

  或者是这样的:

int main(int argc, char** argv);

  给main传参通过argc和argv这两个参数来实现。执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。

  命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[ ] 是一个字符指针数组,指向传递给程序的每个参数。

下面是一个通过指定命令行参数实现简单计算器的程序

#include <string.h>

int Add(int, int);
int Sub(int, int);
int Mul(int, int);
int Div(int, int);

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

    if(argc != 4)
    
        printf("Parameters should be 4.\\n");
        return -1;
    
    
    int param1 = atoi(argv[1]);
    int param3 = atoi(argv[3]);
    
    if(!strcmp(argv[2], "+"))
    
        printf("%s %s %s = %d\\n", argv[1], argv[2], argv[3], Add(param1, param3));
    
    else if(!strcmp(argv[2], "-"))
    
        printf("%s %s %s = %d\\n", argv[1], argv[2], argv[3], Sub(param1, param3));
    
    else if(!strcmp(argv[2], "x"))
    
        printf("%s %s %s = %d\\n", argv[1], argv[2], argv[3], Mul(param1, param3));
    
    else if(!strcmp(argv[2], "/"))
    
        printf("%s %s %s = %d\\n", argv[1], argv[2], argv[3], Div(param1, param3));
    
    else
    
        printf("Parameters fault.");
     return -1;
return 0; int Add(int a, int b) return a + b; int Sub(int a, int b) return a - b; int Mul(int a, int b) return a * b; int Div(int a, int b) return a / b;

  其中C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。由于命令行参数都是字符指针类型,想要对参数进行数学运算,必须把字符串转成int类型。

编译执行如下:

   可以看到,通过给定不同的命令行参数,在同一个程序中可以实现不同的功能。

 

新人才疏学浅,有错的地方敬请指正!!

本文来自博客园,作者:夏末终年,转载请注明出处:https://www.cnblogs.com/xiamozhongnian/p/15869439.html

 

 

以上是关于main函数传参的主要内容,如果未能解决你的问题,请参考以下文章

shell程序传参和main函数传参的区别

Main函数传参

解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。

用main函数传参做简单的计算器的代码

C++中int &m 传参问题?

Java命令行传参