作为C新手,我很难理解以下内容:
int main(int argc, char *argv[]) {
char **inputs = argv + 1;
char **输入是一个指向char * argv []的指针,它也是一个指针,对吗?但为什么我要添加" + 1"在末尾?这将是一个额外的空间,为' \ 0'字符?
答案 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
中的第一个元素只是程序名称。因此,您希望之后的所有内容都是程序输入