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

Why the first argument of argv is 1 not 0

我有一些参数可以使程序正常工作。这个参数应该是,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]));
....

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

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

简单来说,argv[0]的值就是要执行的程序名。 C kinda 保留 argv[0] 索引用于此目的。要深入了解 C 和您的操作系统如何开始相互协作的一些细节,请查看 Stack Overflow 中的 post。