C/C++ 的函数main()参数的用处?

caswly 2018-07-13 05:14:42
初学者问一个问题:C/C++ 的函数main(int argc, char* argv[] )的用处?
通过形参int argc 和 char* argv[] 可以传递命令行的命令,这有什么用处?
谢谢!
...全文
448 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
加盾男爵 2018-07-30
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
命令行解释器概述
命令行解释器是一个单独的软件程序,它可以在用户和操作系统之间提供直接的通讯。非图形命令行解释器用户界面提供运行基于字符的应用程序和实用程序的环境。通过使用类似于 MS-DOS 命令解释程序 Command.com 的单独字符,命令行解释器执行程序并在屏幕上显示其输出。Windows 服务器操作系统命令行解释器使用命令解释程序 Cmd.exe(该程序加载应用程序并指导应用程序之间的信息流动)将用户输入转换为操作系统可理解的形式。
可以使用命令行解释器创建和编辑可自动执行常规任务的批处理文件(也称作脚本)。例如,可以使用脚本自动管理用户帐户或夜间备份。还可以使用 Windows 脚本宿主 CScript 的命令行版本在命令行解释器中运行更高级的脚本。详细信息,请参阅运行 Windows 脚本宿主。通过使用批处理文件来执行操作,可比使用用户界面更有效率。批处理文件接受命令行上可用的所有命令。有关批处理文件和脚本的详细信息,请参阅使用批处理文件。
您可以自定义命令提示符窗口以易于查看并增强对程序运行方式的控制。有关自定义命令提示符窗口的详细信息,请参阅配置命令提示符。

使用命令语法
语法按命令及所带参数必须遵循的键入顺序出现。下面的 xcopy 命令示例显示了各种语法文本格式:

xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:File1[+[File2]][+[File3]] [{/y | /-y}] [/z]

下表说明如何解释不同的文本格式。

格式化图例
格式 含义
斜体 用户必须提供的信息
粗体 用户必须准确键入的要显示的元素
省略号(...) 在命令行中可多次重复的参数
中括号([]) 可选项
大括号({});选项用竖线(|)分隔。例如:{even|odd} 用户必须从选项集合中选择一个
Courier字体 代码或程序输出

使用多个命令和条件处理符号
使用条件处理符号可以在单个命令行或脚本中运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据条件处理符号左边命令的执行结果来发挥作用。例如,只有在前一个命令失败的情况下才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。
可以使用下表列出的特殊字符来传递多个命令。

字符 语法 定义
& [...] Command1 & Command2 用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。
&& [...] Command1 && Command2 只有在符号 && 前面的命令成功时,才运行该符号后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令运行成功时才运行第二个命令。
|| [...] Command1 || Command2 只有在符号 || 前面的命令失败时,才运行符号 || 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。
( ) [...] (Command1 & Command2) 用来分组或嵌套多个命令。
;或者, Command1 Parameter1;Parameter2 用来分隔命令参数。

注意
“与”符号 (&)、管道符号 (|) 以及括号 () 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符 (^) 或引号。
如果某个命令成功完成操作,该命令就返回零 (0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,请参阅 Microsoft Windows 部署和资源工具包。

嵌套命令行解释器
通过在命令提示符下打开新的 Cmd.exe 实例,可以在 Cmd.exe 内嵌套命令行解释器。默认情况下,Cmd.exe 的每个实例继承其父 Cmd.exe 应用程序的环境。通过嵌套 Cmd.exe 的实例,可以更改局部环境,而不会影响 Cmd.exe 的父应用程序。这使您能够保留 Cmd.exe 的原始环境,并在终止嵌套的命令行解释器之后返回到原始环境。但是在嵌套的命令行解释器中所做的更改将不会被保存。
要嵌套命令行解释器,请在命令提示符下键入:

cmd

出现类似于下面内容的消息:

Microsoft (R) Windows Server 2003 Standard Edition (TM)
(C) 版权所有 1985-2002 Microsoft Corp.
要关闭嵌套的命令行解释器,请键入 exit。

使用 setlocal 和 endlocal 命令,可以在 Cmd.exe 的实例中(或在脚本中)进一步将更改局部化。Setlocal 创建局部作用范围,而 endlocal 终止局部作用范围。在 setlocal 和 endlocal 作用范围内所做的更改将会被放弃,从而保持原始环境不变。这两个命令的嵌套最高可达到 32 级。有关 setlocal 和 endlocal 命令的详细信息,请参阅 Setlocal 和 Endlocal。

将环境变量与 Cmd.exe 一起使用
Cmd.exe 命令行解释器环境由确定命令行解释器和操作系统行为的变量进行定义。可以使用两种类型的环境变量(系统和局部)来定义命令行解释器环境或整个操作系统环境的行为。系统环境变量定义全局操作系统环境的行为。局部环境变量定义 Cmd.exe 当前实例环境的行为。
系统环境变量预置于操作系统之中,并可用于所有 Windows 服务器操作系统进程。只有具有管理凭据的用户才可以更改系统变量。这些变量最常用于登录脚本。
局部环境变量只有在创建变量时针对的目标用户登录到计算机时才有效。HKEY_CURRENT_USER 配置单元中设置的局部变量只对当前用户有效,但它们可定义全局操作系统环境的行为。

下表按优先顺序的降序描述变量的各种类型:
1.内置系统变量
2.在 HKEY_LOCAL_MACHINE 配置单元中找到的系统变量
3.在 HKEY_CURRENT_USER 配置单元中找到的局部变量
4.在 Autoexec.bat 文件中设置的所有环境变量和路径
5.在登录脚本(如果有的话)中设置的所有环境变量
6.在脚本或批处理文件中交互使用的变量

在命令行解释器中,Cmd.exe 的每个实例都继承其父应用程序的环境。因此,可以在不影响父应用程序环境的情况下更改新的 Cmd.exe 环境中的变量。
下表列出 Windows server operating system 的系统和本地环境变量。

变量 类型 描述
%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
%CD% 本地 返回当前目录字符串。
%CMDCMDLINE% 本地 返回用来启动当前的Cmd.exe的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统 返回计算机的名称。
%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
%DATE% 系统 返回当前日期。使用与date/t命令相同的格式。由Cmd.exe生成。有关date命令的详细信息,请参阅Date。
%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
%OS% 系统 返回操作系统名称。Windows2000显示其操作系统为Windows_NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86或IA64(基于Itanium)。
%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器的版本号。
%PROMPT% 本地 返回当前解释程序的命令提示符设置。由Cmd.exe生成。
%RANDOM% 系统 返回0到32767之间的任意十进制数字。由Cmd.exe生成。
%SYSTEMDRIVE% 系统 返回包含Windowsserveroperatingsystem根目录(即系统根目录)的驱动器。
%SYSTEMROOT% 系统 返回Windowsserveroperatingsystem根目录的位置。
%TEMP%和%TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与time/t命令相同的格式。由Cmd.exe生成。有关time命令的详细信息,请参阅Time。
%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
%USERNAME% 本地 返回当前登录的用户的名称。
%USERPROFILE% 本地 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。

设置环境变量
使用 set 命令创建、更改、删除或显示环境变量。set 命令只更改当前解释器环境中的变量。

要查看变量,请在命令提示符下键入:

set VariableName

要添加变量,请在命令提示符下键入:

set variablename=Value

要删除变量,请在命令提示符下键入:

set VariableName=

可以将大多数字符用作变量值,其中包括空格。如果使用特殊字符 <、>、|、& 或 ^,则必须在它们前面加上转义字符 (^) 或引号。如果使用引号,则必须将引号作为值的组成部分,因为等号后面的任何内容都会被视为值。请考虑下列示例:

要创建变量值 new&name,请键入:
set varname=new^&name

要创建变量值 "new&name",请键入:
set varname="new&name"

如果在命令提示符下键入 set varname=new&name,就会出现与下面内容类似的错误消息:
“'name' 不是内部或外部文件,也不是可运行的程序或批处理文件。”
变量名不区分大小写。但是,set 显示的变量与您键入的完全相同。可以在变量名中结合使用大写字母和小写字母,这样可以使代码更具有可读性(例如,UserName)。

注意

单个环境变量的最大大小为 8192 字节。
所有环境变量的大小总和(包括变量名和等号)最大为 65,536 KB。
替换环境变量值
要在命令行或脚本中启用变量值替换,请将变量名包括在百分号之中(即,%VariableName%)。使用百分号可以确保 Cmd.exe 引用变量值,而不是进行文字比较。为变量名定义变量值之后,请将变量名包括在百分号之中。Cmd.exe 搜索该变量名的所有实例,并用定义的变量值进行替换。例如,如果创建包含不同值(例如,用户名)的脚本,并且想要用这些值为每个用户定义 USERNAME 环境变量,可以使用包括在百分号之中的 USERNAME 来编写代码。运行此脚本时,Cmd.exe 将用变量值替换 %USERNAME%,这样就消除了为每个用户手动执行此任务的必要。变量替换是不可递归的。Cmd.exe 检查变量一次。有关变量替换的详细信息,请参阅 For 和 Call。

卧槽,赵4老师更新恢复了
  • 打赏
  • 举报
回复
main 函数可以看看汇编。实质上是C程序的入口。不过main入口之前,还是由好多好多汇编级别的调用的。要理解这个,建议用lcc之类的轻量级编译器,编译一个 helloworld,而后跟踪一下汇编即可。
Mr。Lili 2018-07-27
  • 打赏
  • 举报
回复
传入程序测试参数
赵4老师 2018-07-19
  • 打赏
  • 举报
回复
命令行解释器概述
命令行解释器是一个单独的软件程序,它可以在用户和操作系统之间提供直接的通讯。非图形命令行解释器用户界面提供运行基于字符的应用程序和实用程序的环境。通过使用类似于 MS-DOS 命令解释程序 Command.com 的单独字符,命令行解释器执行程序并在屏幕上显示其输出。Windows 服务器操作系统命令行解释器使用命令解释程序 Cmd.exe(该程序加载应用程序并指导应用程序之间的信息流动)将用户输入转换为操作系统可理解的形式。
可以使用命令行解释器创建和编辑可自动执行常规任务的批处理文件(也称作脚本)。例如,可以使用脚本自动管理用户帐户或夜间备份。还可以使用 Windows 脚本宿主 CScript 的命令行版本在命令行解释器中运行更高级的脚本。详细信息,请参阅运行 Windows 脚本宿主。通过使用批处理文件来执行操作,可比使用用户界面更有效率。批处理文件接受命令行上可用的所有命令。有关批处理文件和脚本的详细信息,请参阅使用批处理文件。
您可以自定义命令提示符窗口以易于查看并增强对程序运行方式的控制。有关自定义命令提示符窗口的详细信息,请参阅配置命令提示符。

使用命令语法
语法按命令及所带参数必须遵循的键入顺序出现。下面的 xcopy 命令示例显示了各种语法文本格式:

xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:File1[+[File2]][+[File3]] [{/y | /-y}] [/z]

下表说明如何解释不同的文本格式。

格式化图例
格式 含义
斜体 用户必须提供的信息
粗体 用户必须准确键入的要显示的元素
省略号(...) 在命令行中可多次重复的参数
中括号([]) 可选项
大括号({});选项用竖线(|)分隔。例如:{even|odd} 用户必须从选项集合中选择一个
Courier字体 代码或程序输出

使用多个命令和条件处理符号
使用条件处理符号可以在单个命令行或脚本中运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据条件处理符号左边命令的执行结果来发挥作用。例如,只有在前一个命令失败的情况下才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。
可以使用下表列出的特殊字符来传递多个命令。

字符 语法 定义
& [...] Command1 & Command2 用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。
&& [...] Command1 && Command2 只有在符号 && 前面的命令成功时,才运行该符号后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令运行成功时才运行第二个命令。
|| [...] Command1 || Command2 只有在符号 || 前面的命令失败时,才运行符号 || 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。
( ) [...] (Command1 & Command2) 用来分组或嵌套多个命令。
;或者, Command1 Parameter1;Parameter2 用来分隔命令参数。

注意
“与”符号 (&)、管道符号 (|) 以及括号 () 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符 (^) 或引号。
如果某个命令成功完成操作,该命令就返回零 (0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,请参阅 Microsoft Windows 部署和资源工具包。

嵌套命令行解释器
通过在命令提示符下打开新的 Cmd.exe 实例,可以在 Cmd.exe 内嵌套命令行解释器。默认情况下,Cmd.exe 的每个实例继承其父 Cmd.exe 应用程序的环境。通过嵌套 Cmd.exe 的实例,可以更改局部环境,而不会影响 Cmd.exe 的父应用程序。这使您能够保留 Cmd.exe 的原始环境,并在终止嵌套的命令行解释器之后返回到原始环境。但是在嵌套的命令行解释器中所做的更改将不会被保存。
要嵌套命令行解释器,请在命令提示符下键入:

cmd

出现类似于下面内容的消息:

Microsoft (R) Windows Server 2003 Standard Edition (TM)
(C) 版权所有 1985-2002 Microsoft Corp.
要关闭嵌套的命令行解释器,请键入 exit。

使用 setlocal 和 endlocal 命令,可以在 Cmd.exe 的实例中(或在脚本中)进一步将更改局部化。Setlocal 创建局部作用范围,而 endlocal 终止局部作用范围。在 setlocal 和 endlocal 作用范围内所做的更改将会被放弃,从而保持原始环境不变。这两个命令的嵌套最高可达到 32 级。有关 setlocal 和 endlocal 命令的详细信息,请参阅 Setlocal 和 Endlocal。

将环境变量与 Cmd.exe 一起使用
Cmd.exe 命令行解释器环境由确定命令行解释器和操作系统行为的变量进行定义。可以使用两种类型的环境变量(系统和局部)来定义命令行解释器环境或整个操作系统环境的行为。系统环境变量定义全局操作系统环境的行为。局部环境变量定义 Cmd.exe 当前实例环境的行为。
系统环境变量预置于操作系统之中,并可用于所有 Windows 服务器操作系统进程。只有具有管理凭据的用户才可以更改系统变量。这些变量最常用于登录脚本。
局部环境变量只有在创建变量时针对的目标用户登录到计算机时才有效。HKEY_CURRENT_USER 配置单元中设置的局部变量只对当前用户有效,但它们可定义全局操作系统环境的行为。

下表按优先顺序的降序描述变量的各种类型:
1.内置系统变量
2.在 HKEY_LOCAL_MACHINE 配置单元中找到的系统变量
3.在 HKEY_CURRENT_USER 配置单元中找到的局部变量
4.在 Autoexec.bat 文件中设置的所有环境变量和路径
5.在登录脚本(如果有的话)中设置的所有环境变量
6.在脚本或批处理文件中交互使用的变量

在命令行解释器中,Cmd.exe 的每个实例都继承其父应用程序的环境。因此,可以在不影响父应用程序环境的情况下更改新的 Cmd.exe 环境中的变量。
下表列出 Windows server operating system 的系统和本地环境变量。

变量 类型 描述
%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
%CD% 本地 返回当前目录字符串。
%CMDCMDLINE% 本地 返回用来启动当前的Cmd.exe的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统 返回计算机的名称。
%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
%DATE% 系统 返回当前日期。使用与date/t命令相同的格式。由Cmd.exe生成。有关date命令的详细信息,请参阅Date。
%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
%OS% 系统 返回操作系统名称。Windows2000显示其操作系统为Windows_NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86或IA64(基于Itanium)。
%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器的版本号。
%PROMPT% 本地 返回当前解释程序的命令提示符设置。由Cmd.exe生成。
%RANDOM% 系统 返回0到32767之间的任意十进制数字。由Cmd.exe生成。
%SYSTEMDRIVE% 系统 返回包含Windowsserveroperatingsystem根目录(即系统根目录)的驱动器。
%SYSTEMROOT% 系统 返回Windowsserveroperatingsystem根目录的位置。
%TEMP%和%TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与time/t命令相同的格式。由Cmd.exe生成。有关time命令的详细信息,请参阅Time。
%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
%USERNAME% 本地 返回当前登录的用户的名称。
%USERPROFILE% 本地 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。

设置环境变量
使用 set 命令创建、更改、删除或显示环境变量。set 命令只更改当前解释器环境中的变量。

要查看变量,请在命令提示符下键入:

set VariableName

要添加变量,请在命令提示符下键入:

set variablename=Value

要删除变量,请在命令提示符下键入:

set VariableName=

可以将大多数字符用作变量值,其中包括空格。如果使用特殊字符 <、>、|、& 或 ^,则必须在它们前面加上转义字符 (^) 或引号。如果使用引号,则必须将引号作为值的组成部分,因为等号后面的任何内容都会被视为值。请考虑下列示例:

要创建变量值 new&name,请键入:
set varname=new^&name

要创建变量值 "new&name",请键入:
set varname="new&name"

如果在命令提示符下键入 set varname=new&name,就会出现与下面内容类似的错误消息:
“'name' 不是内部或外部文件,也不是可运行的程序或批处理文件。”
变量名不区分大小写。但是,set 显示的变量与您键入的完全相同。可以在变量名中结合使用大写字母和小写字母,这样可以使代码更具有可读性(例如,UserName)。

注意

单个环境变量的最大大小为 8192 字节。
所有环境变量的大小总和(包括变量名和等号)最大为 65,536 KB。
替换环境变量值
要在命令行或脚本中启用变量值替换,请将变量名包括在百分号之中(即,%VariableName%)。使用百分号可以确保 Cmd.exe 引用变量值,而不是进行文字比较。为变量名定义变量值之后,请将变量名包括在百分号之中。Cmd.exe 搜索该变量名的所有实例,并用定义的变量值进行替换。例如,如果创建包含不同值(例如,用户名)的脚本,并且想要用这些值为每个用户定义 USERNAME 环境变量,可以使用包括在百分号之中的 USERNAME 来编写代码。运行此脚本时,Cmd.exe 将用变量值替换 %USERNAME%,这样就消除了为每个用户手动执行此任务的必要。变量替换是不可递归的。Cmd.exe 检查变量一次。有关变量替换的详细信息,请参阅 For 和 Call。
l357630798 2018-07-17
  • 打赏
  • 举报
回复
自己写一个命令行的程序,然后调用单步调试下就懂了。
陆人葭 2018-07-17
  • 打赏
  • 举报
回复
除了命令行会用到参数之外,还有比如说你要在当前进程中另外再启动一个进程,那么就可以给这个新进程的main()函数传递一些参数,这样main()函数就可以根据你传递的参数做一些特定的事情。
job_baiqiang 2018-07-17
  • 打赏
  • 举报
回复
main ( int argc, char **argv )
main函数中的第一个参数argc代表的是向main函数传递的参数个数,实际上它要比你在命令行里输入的数据多一个,因为第一个参数它保存了该iyunxing程序的路径名, 也就是说如果你向命令行中输入2个数,则argc 实际上等于3, 第二个参数 argv保存的命令面板中的输入的参数值,第一个值是该应用程序的路径名,后面依次是输入的数据的值,注意的是最后一个值是null。下面以一个小程序为例

int main( int argc, char** argv)
{
int i ;
printf(" %d parameters: \n\n", argc);
for(int i =0; i <= argc; i++)
{
printf("argv[%d]: %s\n", i, argv[i] );
}
}

在开始中输入cmd打开命令行程序,将编译好的exe文件拖进命令行程序窗口中,输入1 2 3,按下回车键,结果见图


可参考: http://blog.sciencenet.cn/blog-584193-480191.html

http://stackoverflow.com/questions/3898021/regarding-mainint-argc-char-argv
CyberLogix 2018-07-17
  • 打赏
  • 举报
回复
主要是用来给程序传递参数字符串用的,比如命令行程序的执行需要参数等等
caswly 2018-07-17
  • 打赏
  • 举报
回复
明白了,谢谢。
@风轻云淡_ 2018-07-14
  • 打赏
  • 举报
回复
在早些时候,linux没有界面,windows没有现在这些集成的IDE,写完程序只能用gcc,g++编译后在命令行下执行,如何在程序一开始就初始化或者说获取一些任意的可更改数据呢,就在程序执行命令后面跟上参数,也就是所谓的 argc、argv ,argc代表个数,argv存放参数。
真相重于对错 2018-07-13
  • 打赏
  • 举报
回复
引用 2 楼 caswly 的回复:
谢谢,看到这个用法,不明白究竟可以用在哪里。

比如
你用到一个dos命令
ping 192.168.38.1
ping其实就是一个应用程序,192.168.38.1将作为参数传入ping 的 main函数
caswly 2018-07-13
  • 打赏
  • 举报
回复
谢谢,看到这个用法,不明白究竟可以用在哪里。
_肆 2018-07-13
  • 打赏
  • 举报
回复
dos操作里面可以用到
https://www.cnblogs.com/jisongxie/p/7892366.html

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧