指向控制台参数的指针

时间:2015-01-05 20:51:36

标签: c

作为C新手,我很难理解以下内容:

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

char **输入是一个指向char * argv []的指针,它也是一个指针,对吗?但为什么我要添加" + 1"在末尾?这将是一个额外的空间,为' \ 0'字符?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

为了解释这个上下文中的“+1”,我们正在做指针运算。这就是说,无论argv指向什么,都需要下一个内存地址。由于argv指向字符串数组中的第一个地址(C中为char*),因此保证下一个内存地址是序列中的第二个元素(数组在内存中连续布局) 。因此,argv + 1相当于说&argv[1]

如前所述,argv中的第一个元素只是程序名称。因此,您希望之后的所有内容都是程序输入