🧑‍💻main函数传参

type
Post
status
Published
date
Mar 19, 2026
slug
cpp_main_paramete
summary
C++的main函数传递参数
tags
c++
main函数
入口函数
参数传递
命令行传递参数
category
C++基础
icon
password
🧑‍💻
C++ main函数如何传递参数?

main函数的参数

mian(int argc, const char *argv[])
  • argc (argument count):参数的个数,整型。*注意:它的值等于实际传递的参数个数 + 1**(因为默认将程序自身的执行路径作为第一个参数算入)。
  • argv (argument vector):参数字符串数组。它是一个字符指针数组,数组中的每个元素都是一个 `const char*` 指针,指向一个以 `\0` 结尾的 C 风格字符串。
PS:默认不传递参数时,**argc = 1**,argv[0] = 程序的启动命令,例如(`c:/debug/test.exe`)。
而没有传递参数,那么直接访问 argv[1] 会导致数组越界(野指针解引用),因此常用方式如下:

易错点与易混点补充

 
  1. 参数个数计数误区
      • 假设在命令行执行:test.exe 123 abc
      • 此时 argc 的值是 3,而不是 2。argv[0]test.exeargv[1]"123"argv[2]"abc"
  1. 带空格的参数处理
      • 命令行默认以空格分隔参数。如果传递的参数本身包含空格(如文件路径 C:\My Documents\test.txt),必须用双引号将其括起来:test.exe "C:\My Documents\test.txt"。这样它会被当作一个完整的参数存入 argv[1] 中。
  1. argv 的等价写法
      • const char *argv[] 和 const char **argv 是完全等价的。在函数参数传递时,数组名会退化为指针,两者可以互换使用。
  1. 隐藏的第三个参数(拓展)
      • 在部分操作系统(如Linux/POSIX标准)和编译器中,main 函数其实可以有第三个参数:char *envp[](环境变量表)。但这是非标准的,跨平台开发时不推荐使用,通常推荐使用标准库的 getenv() 函数代替。
 
 

VS studio配置参数

Vs studio快速设置debug环境的默认参数的方式:
解决方案 → 项目名称 → 属性 → 配置属性 → 调试 → 命令参数
 
 
 
 
 
上一篇
日志系统实现
下一篇
Python While循环
Loading...