• C/C++关于main函数参数问题


    前言

    每次写C/C++程序,基本上就是一个int main(){return 0;}。但是后来在linux里面涉及到很多带参数的main函数,我一直不太理解,这里就写篇博客记录一下。


    不带参数的main

    第一种int main(){return 0;}

    //例子1
    #include
    using namespace std;
    int main()
    {
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这种就是我学C++的时候最最简单的一个框架。
    return 0其实就是返回一个状态,表示程序正常结束。

    带参数的main

    后来接触到了带参数的main函数。

    //例子2
    #include
    using namespace std;
    int main(int argc,char *argv[])
    {
    	cout<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    如果把main函数当做我们普通函数处理,就会产生一个问题,main函数的参数谁给的?定义带参的函数,参数都是可以通过指针,变量等传递过来的,按道理来说,应该是先定义变量或者指针并初始化,才可以进行参数传递这种。但是我们的一般程序都是从main函数开始执行,以我们上面第二份代码为例,虽然定义了argc,argv这种类型,但是谁传的参?

    进入正题。

    argc(argument count)表示命令行参数的数量,包括程序的名称。它是一个整数。
    argv(argument vector)是一个指向字符串数组的指针,每个字符串代表一个命令行参数。argv[0]通常是程序的名称,argv[1]到argv[argc-1]包含实际的命令行参数。
    以上面例子2来举例,使用Dev-C++软件进行编译运行,会输出1 程序名第一个1就是表示一个参数,第二个就是程序所在路径以及名称。

    举例说明:

    #include 
    int main(int argc, char *argv[]) {
        printf("Number of arguments: %d\n", argc);
    
        printf("Program name: %s\n", argv[0]);
    
        printf("Arguments:\n");
        for (int i = 1; i < argc; i++) {
            printf("%d: %s\n", i, argv[i]);
        }
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    使用命令行的方式进行操作,效果如下:
    打印信息和我们输入的一致

    在这里插入图片描述

    为什么会有带参数的main

    带参数的main函数主要用于允许程序在启动时接受命令行参数,这样用户可以在运行程序时动态地配置其行为。这对于实现灵活的命令行工具、脚本解释器、以及需要特定输入的应用程序等非常有用。
    以下是一些带参数的main函数的主要用途:

    1.配置程序行为: 通过命令行参数,用户可以在运行程序时指定不同的选项和配置,从而调整程序的行为。例如,一个图像处理工具可以接受文件路径、处理选项等作为参数。
    2.文件操作: 许多程序需要处理文件,而文件名通常可以通过命令行参数传递。这使得程序可以处理不同的输入文件而无需修改源代码。
    3.调试和测试: 在开发和测试阶段,通过命令行参数可以方便地设置调试标志、启用日志记录或者执行特定的测试用例。
    4.自动化脚本: 通过带参数的main函数,可以创建可在脚本中调用的可执行程序。这对于自动化任务和脚本编写非常有用。
    5.系统管理工具: 一些系统管理工具或实用程序可能需要根据用户需求执行不同的操作。通过命令行参数,用户可以告诉程序执行特定的任务。

    总结

    这篇博客主要是针对自己遇到的main带参数情况的讨论以及理解,最后找AI汇总了一下带参数的main的用途。

  • 相关阅读:
    python 学习之typing模块
    GBase 8c 安全特性
    JAVA 泛型、序列化和复制
    数组中子元素为空数组时去掉为空的数组
    详解4种类型的爬虫技术
    项目组合管理在金融科技领域的应用实践︱中银金融PMO负责人张伟
    左右手切换工具xmouse v1.2版本发布
    Miracor Medical 宣布 PiCSO® 获得 FDA 试
    劲松中西医医院谭巍主任在线分析:HPV复阳的三大祸首
    el-select的值为对象时,使用value-key回显
  • 原文地址:https://blog.csdn.net/Edwinwzy/article/details/134293049