C++中命令行参数argc,argc[ ]究竟是什么

1.argc为整数

2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][] ,argv是一个指针数组)

注:main()括号内是固定的写法。

3.下面给出一个例子来理解这两个参数的用法:

假设程序的名称为prog,

当只输入prog,则由操作系统传来的参数为:

argc=1,表示只有一程序名称。

argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog

当输入prog para_1,有一个参数,则由操作系统传来的参数为:

argc=2,表示除了程序名外还有一个参数。

argv[0]指向输入的程序路径及名称。

argv[1]指向参数para_1字符串。

当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:

argc=3,表示除了程序名外还有2个参数。

argv[0]指向输入的程序路径及名称。

argv[1]指向参数para_1字符串。

argv[2]指向参数para_2字符串。

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

    char *argv[ ] : argv是一个指针数组,它的元素个数是argc,存放的是指向每一个参数的指针
    argc 是 argument count的缩写,表示传入main函数的参数个数;

argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个;

简单用法示例,新建工程键代码:

#include <iostream>using namespace std;void main(int argc,char *argv[])
{for(int i=0;i<argc;i++){cout<<"argument["<<i<<"] is: "<<argv[i]<<endl;}system("pause");
}

argv是指向指针的指针,main函数的第二个参数“char *argv[]“也可以替换为 “char **argv“,两者是等价的。

在编译环境下按F5运行,输出如下:

可见,在没有参数传入的情况下,保存程序名称的第一个变量argv[0]依然存在。

传参数给main函数有两种方法,第一种方式是在编译环境中设置,以vs2012为例,右击项目—>属性—>配置属性—>调试—>命令参数,在命令参数中输入,每个参数之间用空格隔开。

之后点击确定并应用,运行之后显示如下:

下一个例子演示使用opencv显示一幅图片:

#include <iostream>
#include <core/core.hpp>
#include <highgui/highgui.hpp>
using namespace std;
using namespace cv;void main(int argc,char **argv)
{Mat image=imread(argv[1]);imshow("Lena",image);waitKey();
}

注意读入的参数是argv[1],在命令提示符窗口运行:

最后说明一下:一般编译器默认使用argc和argv两个名称作为main函数的参数,但这两个参数如此命名并不是必须的,你可以使用任何符合C++语言命名规范的变量名作为入参,效果是一样的:

c++笔记(1):C++中命令行参数argc,argc[ ]究竟是什么相关推荐

  1. 文本编辑器中命令行参数的应用

    文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...

  2. python 命令行参数-python中命令行参数

    python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 len(sys.argv)是命令 ...

  3. Go语言中命令行参数的实现

    为什么80%的码农都做不了架构师?>>>    在写命令行程序时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自 ...

  4. Python自学笔记(二)命令行参数使用

    前言   当我们在写完多个pyhon脚本时,怎么去使用这些脚本也成为一个问题.我们写的这些脚本对于使用者来说是封闭的存在,为了让我们的脚本文件更加灵活,我们可以通过命令行参数给脚本传入相应的数据并运行 ...

  5. 在c语言中命令行参数是什么,C语言命令行参数

    这是可能在命令行中的一些值传递给C程序执行.特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要. 命令行参数使用main()函数的参数,其 ...

  6. c/c++处理命令行参数int argc, char **argv的方法

    第一种:switch #include<iostream> #include<string> #include<cstring> #include<cmath ...

  7. c语言中命令行参数argc,argv[]详解

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

  8. python获取命令行参数_【整理】Python中如何获得并处理命令行参数

    运行Python脚本时,时常需要从命令行中传递一些参数到Python程序中,但是如何获得相应的传递进来的参数,以及如何解析这些参数,是很多人,包括最开始的我,所遇到的问题. 下面,就对此总结一下: 先 ...

  9. Python的命令行参数解析

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse.下 ...

最新文章

  1. springCloud--1
  2. scanf在c语言中的作用是什么?
  3. leetcode216. 组合总和 III(回溯)
  4. 一条SQL语句查询当前数据库下有多少张表
  5. SqlServer为什么自动在主键上建立聚集索引
  6. 15个最佳jQuery的翻页书效果的例子
  7. camera驱动电源配置_基于AD7656-1和ADuC7026评估电源时序控制影响
  8. 如何使用 AirDrop 将 MAC 中的照片整理好,并上传到 iPhone 的相册中?
  9. Java 又双叒叕发布新版本,这么多版本如何灵活管理?
  10. Maven搭建SpringMVC项目详解
  11. 银行转账和分布式事务(转)
  12. 扬州晶澳-年产3GW高性能太阳能光伏组件项目 Acrel-3000WEB电能管理系统的设计及应用
  13. react富文本编辑器
  14. 本地网络出现了一个意外的情况,不能完成所有你在设置中所要求的更改
  15. java异常处理(Exception handing)机制
  16. Windows10资源管理器使用
  17. 大白菜装机教程win10_电脑一键装机win10系统_win10教程
  18. 恢复我的文档中三个标准文件夹
  19. Idea中诡异的错误——文件为灰色并显示一个橙色时钟图标
  20. 暗角教程,如何加镜头晕影暗角效果

热门文章

  1. 基于tensorflow2.1和opencv的车牌识别系统
  2. Linux文件夹乱码,inode号处理文件
  3. 最短路径问题(更新)
  4. 电脑触摸板无法使用,I2C HID设备异常处理。
  5. Python学习手册(第4版)学习笔记
  6. android studio配置被掠记
  7. 大话西游手游服务器维护要多久,大话西游手游2018年8月2日维护公告
  8. 市场新模式下的交友陪玩app源码技术要求如何适配用户体验?
  9. 【报告分享】后疫情时代境外消费洞察报告-Meltwater天猫淘宝海外雨果跨境(附下载)
  10. android textview坐标,android – 获取TextView中文本的位置