C语言main函数参数的用法(非常详细)
在 C语言中,main() 函数可以接收参数,其定义如下:
例如,当我们使用以下命令启动 demo 可执行文件时:
有两种等价的方法可以从二级指针 argv 获取字符串首元素指针:
使用取值运算符的写法如下图所示:

图 1 使用取值运算符的写法
*argv 指向第一个字符串的首字母,*(argv + 1) 指向第二个字符串的首字母,*(argv + 2) 指向第三个字符串的首字母。
使用下标的写法如下图所示:

图 2 使用下标的写法
argv[0] 指向第一个字符串的首字母,argv[1] 指向第二个字符串的首字母,argv[2] 指向第三个字符串的首字母。

图 3 vs输出
接下来,我们打开命令提示符,尝试输入 vs_demo,运行结果如下图所示:

图 4 vs_demo
命令提示符显示,vs_demo 不是内部或外部命令,也不是可运行的程序或批处理文件。这是因为,vs_demo.exe 不在系统的可执行文件搜索目录中。因此,我们应当使用完整的路径来执行这个可执行文件。
这种完整的文件路径被称为文件的绝对路径。在命令提示符中输入可执行文件的绝对路径并按 Enter 键,即可运行这个可执行文件。
运行结果如下图所示,可以发现参数个数显示为 1:

图 5 绝对路径
我们再尝试添加几个字符串参数,在绝对路径之后加上 have a good time,例如:

图 6 绝对路径加参数
可以发现参数个数为 5,字符串参数如下:
命令提示符的当前目录显示在每行前面的路径中,如 C:/Users/linge,如下图所示:

图 7 当前目录
我们可以将当前路径切换到 E:/project/vs_demo/x64/Debug,然后通过相对路径执行 vs_demo.exe。我们可以通过直接输入 E: 并按 Enter 键将盘符切换到 E 盘,如下图所示:

图 8 切换到E盘
接下来我们使用 cd E:/project/vs_demo/x64/Debug 命令将当前目录切换到 E:/project/vs_demo/x64/Debug,如下图所示:

图 9 切换当前目录
现在,可执行文件 vs_demo.exe 就位于当前目录下。因此,我们可以使用相对路径 vs_demo.exe 来执行它,如下图所示:

图 10 执行vs_demo.exe
当然,我们还可以省略后缀名 .exe,如下图所示:

图 11 省略后缀执行 vs_demo.exe
int main(int argc, char **argv) { return 0; }更改 main() 函数的声明以接收两个参数:int argc 和 char **argv:
- int argc:命令行参数的个数。argc 的值至少为 1,因为程序名称本身也被视为一个参数。
- char **argv:一个字符串数组,包含命令行参数。
例如,当我们使用以下命令启动 demo 可执行文件时:
E:/demo.exe baidu.com -t若主函数带有参数,那么 argc 的值为 3,即命令包含 3 个由空格分隔的字符串。argv 是一个 char ** 类型的指针,它指向一个元素类型为 char * 的数组的首元素。数组中的元素分别指向各个字符串的首字符。这 3 个字符串分别为 E:/demo.exe、baidu.com、-t。
有两种等价的方法可以从二级指针 argv 获取字符串首元素指针:
- 使用指针移动和取值运算符。
- 使用下标。
使用取值运算符的写法如下图所示:

图 1 使用取值运算符的写法
*argv 指向第一个字符串的首字母,*(argv + 1) 指向第二个字符串的首字母,*(argv + 2) 指向第三个字符串的首字母。
使用下标的写法如下图所示:

图 2 使用下标的写法
argv[0] 指向第一个字符串的首字母,argv[1] 指向第二个字符串的首字母,argv[2] 指向第三个字符串的首字母。
C语言使用main函数参数
下面展示了一个 main() 函数参数的示例:#include <stdio.h> int main(int argc, char **argv) { printf("%d\n", argc); for(int i = 0; i < argc; i++) { printf("%s\n", argv[i]); } return 0; }查看下图,在编译成功后,我们可以查看可执行文件的名称和所在目录。可执行文件位于目录 E:/project/vs_demo/x64/Debug 中。可执行文件名为 vs_demo.exe。

图 3 vs输出
接下来,我们打开命令提示符,尝试输入 vs_demo,运行结果如下图所示:

图 4 vs_demo
命令提示符显示,vs_demo 不是内部或外部命令,也不是可运行的程序或批处理文件。这是因为,vs_demo.exe 不在系统的可执行文件搜索目录中。因此,我们应当使用完整的路径来执行这个可执行文件。
1) 绝对路径
可执行程序完整的路径为 E:/project/vs_demo/x64/Debug/vs_demo.exe。这种完整的文件路径被称为文件的绝对路径。在命令提示符中输入可执行文件的绝对路径并按 Enter 键,即可运行这个可执行文件。
运行结果如下图所示,可以发现参数个数显示为 1:

图 5 绝对路径
我们再尝试添加几个字符串参数,在绝对路径之后加上 have a good time,例如:
E:/project/vs_demo/x64/Debug/vs_demo.exe have a good time运行结果如下图所示:

图 6 绝对路径加参数
可以发现参数个数为 5,字符串参数如下:
- E:/project/vs_demo/x64/Debug/vs_demo.exe。
- have。
- a。
- good。
- time。
2) 相对路径
除了使用绝对路径,我们还可以以命令提示符的当前路径作为基准,通过相对的方式找到文件的位置,这种路径被称为相对路径。命令提示符的当前目录显示在每行前面的路径中,如 C:/Users/linge,如下图所示:

图 7 当前目录
我们可以将当前路径切换到 E:/project/vs_demo/x64/Debug,然后通过相对路径执行 vs_demo.exe。我们可以通过直接输入 E: 并按 Enter 键将盘符切换到 E 盘,如下图所示:

图 8 切换到E盘
接下来我们使用 cd E:/project/vs_demo/x64/Debug 命令将当前目录切换到 E:/project/vs_demo/x64/Debug,如下图所示:

图 9 切换当前目录
现在,可执行文件 vs_demo.exe 就位于当前目录下。因此,我们可以使用相对路径 vs_demo.exe 来执行它,如下图所示:

图 10 执行vs_demo.exe
当然,我们还可以省略后缀名 .exe,如下图所示:

图 11 省略后缀执行 vs_demo.exe