为什么argv的第一个参数是1而不是0

luk*_*eer 1 c ansi-c

我有一些参数可以让程序正常工作。该参数应该是 MAX_NUM, x, y。

当捕获 char 输入列表的参数时,我当前使用参数 1 而不是 0 获取 MAX_NUM。

前任:

int main (int argc, char *argv[]) {
    int MAX_NUM = atoi(argv[0]);
    int x = atoi(argv[1]);
    int t = atoi(argv[2]);
    printf("MAX_NUM %d\n", atoi(argv[0]));
....

Run Code Online (Sandbox Code Playgroud)

打印argv[1]我正确地得到了 MAX_NUM,当打印第一个参数时得到 0。

为什么 C 将 char 输入列表数组初始化为 1 而不是 0 或程序名称?

APE*_*LED 5

简单来说, 的值argv[0]就是要执行的程序的名称。C有点argv[0]为此目的保留了索引。要深入了解 C 和操作系统如何开始相互协作的一些细节 - 请查看Stack Overflow中的这篇文章。