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

如果我有这个:

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

在本体中,有时可以使用argv[1]找到程序。

我们什么时候在argv[0]使用argv[1] argv[0] ? 仅当我们想要读取命令行中的第二个参数时才这样做?


按照惯例argv[0]当前程序的名称 (或路径), argv[1]argv[argc - 1]是用户提供的命令行参数

但是,这并非必须如此 - 程序可以通过操作系统特定的功能绕过这一要求,而且这种情况经常发生,以至于您应该意识到这一点。 (即使你意识到这一点,我也不确定你是否可以做很多事情,尽管......)

例:

gcc -O3 -o temp.o "My file.c"

会(应该)产生以下论点:

argc: 5
argv: ["gcc", "-O3", "-o", "temp.o", "My file.c"]

所以说argv[0]会引用gcc ,而不是-O3


argv是一个指针数组,并且该数组中的每个指针都存储来自命令行的一个参数。 所以argv[0]是第一个参数(这是可执行文件/程序本身), argv[1]是第二个参数,依此类推!

参数的总数由argc决定。


假设你的C ++可执行文件是:

/home/user/program (或Windows中的C:program.exe

如果你执行:

./home/user/program 1 2 (或Windows中的C:program.exe 1 2

argv[0] = /home/user/programC:program.exe
argv[1] = 1
argv[2] = 2

那是因为:

  • argv[0]是可执行文件的路径
  • argv[1]是第一个参数
  • 编辑:

    现在我看到argv[0]不一定是可执行文件的路径。
    阅读以下SO问题:args [0]保证是执行的路径吗?

    链接地址: http://www.djcxy.com/p/28727.html

    上一篇: int main(int argc, char *argv[])

    下一篇: int main(int argc, char** argv)