将argc
传递给main
似乎是多余的。看一下下面的例子。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[], char *envp[])
{
int j;
for (j = 0; j < argc; j++)
printf("argv[%d]: %s\n", j, argv[j]);
for (j = 0; envp[j] != NULL; j++)
printf("envp[%d]: %s\n", j, envp[j]);
for (j = 0; argv[j] != NULL; j++)
printf("argv[%d]: %s\n", j, argv[j]);
exit (EXIT_SUCCESS);
}
第一个for
循环使用标准方式使用argc
枚举命令行参数。
第二个循环显示如何枚举环境。环境存储在由NULL终止的指针列表中。环境中的条目数不会传递给main。
同样适用于参数列表。第三个循环显示了如何在不使用argc
的情况下枚举参数。
所以问题是:为什么argc
如果是多余的话会传递给main
?
答案 0 :(得分:-1)
argc表示“参数计数”。它表示将多少个参数传递到可执行文件中。 argv的意思是“参数值”。它是指向字符数组的指针。或者以另一种方式考虑它,它是一个C字符串数组(因为C字符串只是字符数组)。
所以如果你有一个程序“foo”并执行它:
foo -bar baz -theAnswer 42
然后在main()函数中,argc为5,argv为:
argv[0] = "/full/path/to/foo";
argv[1] = "-bar";
argv[2] = "baz";
argv[3] = "-theAnswer";
argv[4] = "42";