指向控制台参数的指针

Pointer to console arguments

作为一个C新手,我有以下理解困难:

 int main(int argc, char *argv[]) {
     char **inputs = argv + 1;

char **inputs 是指向 char *argv[] 的指针,它也是一个指针,对吧?但为什么我必须在末尾添加“+1”?这会是 '\0' 字符的额外 space 吗?

argv[0],或第一个参数,是保存程序名称的字符串。

这只是为了忽略包含调用程序的路径名的第一个条目。总是至少有一个参数传递给 main,就是这个。尝试自己传递一些参数并打印它们..你会得到一个更好的主意:)

argv[0] 是您当前正在使用的程序 运行
argv[1+] 是传递给程序的参数
也许不是最好的参考:https://www.gnu.org/software/gawk/manual/html_node/ARGC-and-ARGV.html

为了解释这个上下文中的“+1”,我们正在做指针运算。这就是说您想要 argv 指向的任何内容之后的下一个内存地址。由于 argv 指向字符串数组中的第一个地址(C 中的 char* ),因此下一个内存地址保证是序列中的第二个元素(数组在内存中连续布局) .因此,argv + 1 等同于 &argv[1]

如前所述,argv中的第一个元素只是程序名称。所以你想要程序输入之后的一切