C++中main()函数和命令行参数介绍

C++中main()函数和命令行参数介绍

在C++中,main()函数是程序的入口点,它是一个特殊的函数,在程序开始执行时被首先调用,也是程序结束时的最后一个被执行的函数。main() 函数的类型始终为 int,根据C++标准,main() 函数必须返回一个整数作为程序的退出码。这个退出码可以用来表示程序的执行状态,通常为0表示程序正常结束,非零值表示程序发生了错误或异常情况。

在C++中,main()函数函数声明可以变为以下形式之一:

int main()

{

    // 代码块

    return 0; // 或者其他整数值

}

int main()和int main(void)是等价的,它们都表示main函数没有接受任何参数。这两种形式都是合法的,并且在主流的C++编译器中被广泛接受。

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

{

    // 代码块

    return 0; // 或者其他整数值

}

后面这种形式可以让我们从命令行传递参数给程序。其中:

argc 是命令行参数的数量即个数

argv 是一个指向字符串数组的指针,每个字符串表示一个命令行参数,argv表示命令行参数的具体内容,其类型为字符指针数组。这些参数可以在程序运行时通过命令行提供。argv是一个指向字符串数组的指针,每个字符串都存储一个命令行参数。第一个参数argv[0]通常是程序的名称。

以下是一个示例,展示了如何在C++中使用命令行参数:

#include <iostream>
using namespace std; int main(int argc, char* argv[]) {// 打印程序名称cout << "程序名称: " << argv[0] << endl;// 打印命令行参数for (int i = 1; i < argc; ++i) {cout << "参数 " << i << ": " << argv[i] << endl;}return 0;
}

如果将程序保存为myProgram.cpp并编译运行,我这里将编译文件myProgram.exe放在D:\cppDemo中,

可以通过在命令行cmd中输入以下内容来传递参数:

myProgram aa bb

输出是:

程序名称: myProgram

参数 1: aa

参数 2: bb

参见下图:

这样,我们可以在程序中通过 argc 和 argv 来访问和处理这些命令行参数。

myProgram aa bb

这将导致 argc 的值为 3(包括程序名 ./myProgram 在内),而 argv 会被填充为以下内容:

char *argv[3] = {

    "./myProgram",

    "aa",

    "bb"

};

这样,我们可以在程序中通过 argc 和 argv 来访问和处理这些命令行参数。

小结一下:

main()函数的原型可以有两种形式:

int main()

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

第一种形式最常见,表示main()函数没有接受任何参数,不需要处理命令行参数。

第二种形式,表示main()函数接受命令行参数。其中,argc表示命令行参数的数量,argv是一个指向字符串数组的指针,每个字符串都存储一个命令行参数。第一个参数argv[0]通常是程序的名称。

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

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

相关文章

深度学习trick

本次Tricks主要面向于深度学习中计算机视觉方向的研究&#xff0c;分为数据增广方法、训练技巧&#xff0c;参数调节这三个方面进行深入的分析。内容有一部分是基于openmmlab的mmdet和mmseg两个框架上的成熟应用案例进行详细阐述。 首先是数据增广的tricks&#xff1a; 0、Fli…

概率论的学习和整理18:为什么 P(至少成功1次) = Σ P(几何分布) ,总结几何分布和连续失败概率的关系,二项分布和累计成功k次的关系

目录 1 先说结论&#xff1a; 2 Σ几何分布的P(xn) P(n次试验至少成功1次) 2.1 几何分布的概率 2.2 这个是可以证明的&#xff0c;下面是推导过程 2.3 怎么理解呢&#xff1f; 3 另外&#xff0c;P(累计成功k次) ΣP(成功k次的二项分布) 3.1 成功k次的概率 和 累计成…

【NLP】transformers的位置编码

一、背景 本文是“实现的变压器”系列的第二篇。它从头开始引入位置编码。然后,它

《3.linux应用编程和网络编程-第9部分-3.9.linux网络编程实践》3.9.6_7.soekct实践编程1_2

概念&#xff1a;端口号&#xff0c;实质就是一个数字编号&#xff0c;用来在我们一台主机中&#xff08;主机的操作系统中&#xff09;唯一的标识一个能上网的进程。端口号和IP地址一起会被打包到当前进程发出或者接收到的每一个数据包中。每一个数据包将来在网络上传递的时候…

Ubuntu学习笔记(二)——文件属性与权限

文章目录 前言一、用户与用户组1.用户&#xff08;文件拥有者&#xff09;2.用户组3.其他人 二、Linux用户身份与用户组记录文件1. /etc/passwd2. /etc/shadow3. /etc/group 三、文件属性与权限1. 查看文件属性的方法&#xff08;ls&#xff09;2.文件属性详细介绍2.1 权限2.2 …

jib进行本地打包,并上传本地镜像仓库

使用 Jib 进行本地打包和上传到本地镜像仓库是一种方便的方式&#xff0c;而无需编写 Dockerfile。Jib 是一个开源的 Java 容器镜像构建工具&#xff0c;它可以直接将 Java 项目打包为镜像&#xff0c;并将其推送到容器镜像仓库。 gradle 进行jib的配置 import java.time.Zon…

msvcp140.dll丢失怎么弄?分享几个最靠谱的解决方法

当你在运行某个程序或游戏时&#xff0c;突然收到一个错误提示&#xff0c;提示你的计算机缺少msvcp140.dll文件。这意味着你的计算机中缺少一个重要的系统文件&#xff0c;可能会导致程序无法正常运行。下面是一些详细的解决方法&#xff0c;帮助你解决msvcp140.dll丢失的问题…

Windows与Linux取证分析

目录 一、电子数据取证基本概念 1.电子取证学 2.常规取证 3.洛卡德物质交换原理 4.电子数据范围 5.电子数据取证的概念和目的 6.电子数据取证过程 二、Linux系统取证 1.基本信息获取 &#xff08;1&#xff09;获取系统基础信息 &#xff08;2&#xff09;用户/用户…

Windows安装Oh-My-Posh美化Powershell

Windows Terminal&#xff1a;https://www.microsoft.com/store/productId/9N0DX20HK701 最新Powershell下载&#xff1a;https://github.com/PowerShell/PowerShell/releases Oh-My-Posh官网&#xff1a;https://ohmyposh.dev/ Nerd字体下载&#xff1a;https://www.nerdfonts…

ubuntu20.04配置vscode

下载&#xff1a; https://az764295.vo.msecnd.net/stable/660393deaaa6d1996740ff4880f1bad43768c814/code_1.80.0-1688479026_amd64.debhttps://az764295.vo.msecnd.net/stable/660393deaaa6d1996740ff4880f1bad43768c814/code_1.80.0-1688479026_amd64.deb 安装&#xff1a…

Mysql数据库之事务

目录 一、事务的概念 二、事务的ACID特点 1.原子性&#xff08;Atomicity&#xff09; 2.一致性&#xff08;Consistency&#xff09; 3.隔离性&#xff08;lsolation&#xff09; 4.持久性&#xff08;Durability) 三、并发访问表的一致性问题和事务的隔离级别 1.并发访…

【C++】开源:跨平台轻量日志库easyloggingpp

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍跨平台轻量日志库easyloggingpp。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&am…