当前位置: 首页 > news >正文

c++中main(int argc, char* argv[])参数详解

目录

一、main函数形式

1.无参数:

2.带有两个参数:

二、参数详解

1.int argc

2.char* argv[]

三、示例演示


一、main函数形式

在C++中,main 函数可以有两种常见的参数形式:

1.无参数

代码如下:

int main() {  // ...  return 0;  
}

这是最基础的 main 函数形式。 

2.带有两个参数

代码如下:

int main(int argc, char* argv[]) {  // ...  return 0;  
}

        第一种不带参数很好理解,下面就来详细理解第二种带有两个参数的形式。

二、参数详解

1.int argc

        main函数第一个参数为int argc,int表示为整形,argc全称为argument count,翻译为中文就是参数数量,可见第一个参数很好解释就是表示传递给程序的命令行参数的数量(包括程序名称)

2.char* argv[]

        main函数第二个参数为char* argv[],char*表示字符指针,argv全称为argumen vector,翻译中文就是参数数组。

        很多人看到这个参数指char* argv[],应该大多数新手程序员都是一脸懵的状态,心想char argv[]表示传递的参数是字符数组也就是字符串,但是又加上了*指针是什么意思呢?不要着急,下面看上一段代码,保证新手也能够理解!

	char nameStr1[] = "David";char nameStr2[] = "Lucy";// char* name[] 表示的是字符串数组	char* name[] = { nameStr1,nameStr2 };for (auto item : name){cout << item << endl; // David  Lucy}

        从上面三行代码不难看出,char* argv[]其实存储的就是字符串数组,其中nameStr1和nameStr2表示的是指针(参考int arr[],arr为指针地址。虽然std::cout << nameStr1;结果为"David",不是地址。这是因为std::cout 的 << 运算符重载版本知道如何处理 char*(字符指针)类型的参数。它不会打印出指针的地址,而是打印出指针指向的字符串内容所以综上所述,main函数中第二个参数表示的就是数组,数组里面包含这命令行参数的内容。 

三、示例演示

1.新建项目输入代码

#include <iostream>int main(int argc, char* argv[])
{std::cout << "参数个数为:" << argc << std::endl;for (int i = 0; i < argc; i++){std::cout << "参数为: " << argv[i] << std::endl;}
}

2.获取执行程序路径名

        右键运行程序,点击重新生成。

        获取运行程序路径

3.打开控制台程序,输入运行程序的路径以及其他参数

        结果可见第argv 将是一个包含四个字符串的数组:

"D:\class_c++\YiDaoYun_Class2.1\Debug\1.main_arguement.exe""arg1""arg2", 和 "arg3"。 

第一个数组元素为运行程序的运行地址

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PaddleDetection快速体验quick_start
  • 云南区块链商户平台发票助手成品
  • 【数据结构】排序(上)
  • 编程不行?解锁求职新路径的七大策略
  • java使用websocket遇到的问题
  • pdf转图片,pdf转图片在线转
  • Ubuntu 网络重置
  • Scapy使用报错Interface is invalid (no pcap match found) 解决办法
  • 【环境搭建】2.阿里云ECS服务器 安装MySQL
  • 必刷!!软考【系统分析师】100道高频考题(含知识点解析),轻松45+
  • 《玫瑰的故事》打响暑期档,“三连爆”的新丽领跑剧集市场
  • 【算法与数据结构】【数组篇】【题11-题15】
  • 2025广州眼博会,2025广东省眼睛健康及眼科产业展览会
  • 达梦8 开启物理逻辑日志对系统的影响
  • TinyVision V851s 使用 OpenCV + NPU 实现 Mobilenet v2 目标分类识别
  • Brief introduction of how to 'Call, Apply and Bind'
  • dva中组件的懒加载
  • JavaScript创建对象的四种方式
  • jQuery(一)
  • linux安装openssl、swoole等扩展的具体步骤
  • Python学习之路13-记分
  • yii2权限控制rbac之rule详细讲解
  • 第2章 网络文档
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 分类模型——Logistics Regression
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 写代码的正确姿势
  • 学习使用ExpressJS 4.0中的新Router
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • !$boo在php中什么意思,php前戏
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #ifdef 的技巧用法
  • (04)odoo视图操作
  • (2)空速传感器
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (六)vue-router+UI组件库
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)80c52学习之旅-起始篇
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • ***检测工具之RKHunter AIDE
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理出现中文乱码的情况
  • .NET 8.0 发布到 IIS
  • .NET C# 配置 Options
  • .net core使用ef 6