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

文章目录

  • 前言
  • 不带参数的main
  • 带参数的main
  • 为什么会有带参数的main
  • 总结

前言

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


不带参数的main

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

//例子1
#include<iostream>
using namespace std;
int main()
{return 0;
}

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

带参数的main

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

//例子2
#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{cout<<argc<<" ";printf("%s",argv[0]);return 0;
}

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

进入正题。

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

举例说明:

#include <stdio.h>
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;
}

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

在这里插入图片描述

为什么会有带参数的main

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

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/194157.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见Web安全

一.Web安全概述 以下是百度百科对于web安全的解释&#xff1a; Web安全&#xff0c;计算机术语&#xff0c;随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生&#xff0c;基于Web环境的互联网应用越来越广泛&#xff0c;企业信息化的过程中各种应用都架设在Web平台…

安装Nginx时报:./configure: error: can not define uint32_t

安装版本&#xff1a;v.1.25.3 安装命令&#xff1a; ./configure --prefix/opt/nginx/1.25.3 && make && make install 执行命令后出现异常&#xff0c;如图&#xff1a; 解决方法&#xff1a; yum install -y kernel-headers kernel-devel gcc make

Jmeter配置脚本录制进行抓包并快速分析、定位接口问题

对于测试人员、开发人员来说&#xff0c;善用抓包工具确实是快速分析和定位问题的一大必备神技&#xff0c;现将配置过程记录如下: 1、打开jmeter后&#xff0c;首先添加—个线程组: 2、线程组可以重新命名按项目名称分类: 如果你想学习自动化测试&#xff0c;我这边给你推荐一…

HFSS螺旋线圈的设计与仿真

HFSS螺旋线圈的设计与仿真 HFSS中设计螺旋线圈的方法&#xff1a;参考文献&#xff1a; HFSS中设计螺旋线圈的方法&#xff1a; 打开软件Ansys Eletronics Desktop 2022 R1&#xff0c; 建立工程&#xff0c; File/New 插入HFSS设计&#xff0c; Project/Insert HFSS Design …

单链表在线OJ题(详解+图解)

1.删除链表中等于给定值 val 的所有节点 本题的要求是输入一个val的整形值&#xff0c;若链表中节点存储的值与val相等&#xff0c;则删除这个节点&#xff0c;并最后返回这个删除节点后的链表&#xff0c;思路如下&#xff1a; 我们可以直接使用while循环&#xff0c;并且使用…

“新KG”视点 | 知识图谱与大语言模型协同模式探究

OpenKG 大模型专辑 导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力&#xff0c;知识图谱则丰富了表示知识的方式&#xff0c;两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下&#xff0c;OpenKG组织…

SOME/IP 协议介绍(五)指南

指南&#xff08;信息性&#xff09; 选择传输协议 SOME/IP直接支持互联网上使用最广泛的两种传输协议&#xff1a;用户数据报协议&#xff08;UDP&#xff09;和传输控制协议&#xff08;TCP&#xff09;。UDP是一种非常简洁的传输协议&#xff0c;仅支持最重要的功能&#…

OpenCV快速入门:图像形态学操作

文章目录 前言一、图像形态学基础1.1 背景介绍1.2 像素距离1.2.1 什么是像素距离&#xff1f;1.2.2 常见的像素距离度量方法1.2.3 计算像素距离的代码实现 1.3 图像连通性1.3.1 什么是图像连通性&#xff1f;1.3.2 连通类型1.3.3 连通组件标记1.3.4 连通性在图像处理中的应用 1…

算法设计与分析复习--贪心(一)

文章目录 上一篇贪心的性质活动安排问题贪心背包问题最优装载哈夫曼编码下一篇 上一篇 算法设计与分析复习–动态规划 贪心的性质 贪心和动态规划都要求问题具有最优子结构&#xff1b; 可用贪心方法时&#xff0c;动态规划可能不适用 可用动态规划方法时&#xff0c;贪心方法…

中国制库:创新引领,效率突破,塑造行业新标准

制库是一家专注于企业知识应用的在线SAAS平台,主要构成部分包括制度、表单、流程、制问和集合。作为集合了各种管理制度的平台,制库不仅提供了丰富的制度资源,还通过SAAS版实现了知识集成、修订和应用的全流程。目标是打造中国全面的企业制度库,帮助企业快速建立核心管理系统,并…

iTerm2+oh-my-zsh搭建Mac电脑上终端环境

根据苹果网站上介绍&#xff0c;bash是 macOS Mojave 及更早版本中的默认Shell&#xff0c;从 macOS Catalina 开始&#xff0c;zsh(Z shell) 是所有新建用户帐户的默认Shell。 1. 安装Oh my zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzs…

⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ MySQL存储过程 1. 介绍2. 使用3. 变量①系统变…