首页 > 编程笔记 > C语言笔记 阅读:15

C语言main函数参数的用法(非常详细)

在 C语言中,main() 函数可以接收参数,其定义如下:
int main(int argc, char **argv)
{
    return 0;
}
更改 main() 函数的声明以接收两个参数:int argc 和 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,字符串参数如下:

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

相关文章