为什么要使用这种定义?

时间:2014-07-21 14:22:32

标签: c

我正在阅读压缩库并遇到主要功能的定义为

int main(int argc, char *argv[])

并且不明白为什么他们使用这种类型的定义。我不是专业人士。请尽可能简单地提供答案,以便我能够轻松理解。

2 个答案:

答案 0 :(得分:4)

从命令行运行程序时,可能会传递命令行参数:

例如:

wget --tries=10 -r http://stackoverflow.com

wget是程序的名称,命令行在argc / argv参数中编码,因此程序可以根据传递给的参数更改其行为它

在此示例中,int argc将以所有参数的计数结束,包括程序名称本身: 4

argv将分别是每个参数的数组:

argv[0] == wget
argv[1] == --tries=10
argv[2] == -r
argv[3] == http://stackoverflow.com

答案 1 :(得分:1)

main()函数有几种形式。这个定义是为了适应主要功能块内的捕获和使用命令行参数。

也就是说,argc将包含一个整数值,表示用于调用可执行文件的命令行参数的数量。 argv[]将包含参数的字符串表示形式,可执行文件的名称本身位于数组的位置0,如果在可执行文件名后面有参数(或开关),它们将包含在与之匹配的数组位置中它们出现在命令行中的顺序。

例如:对于名为GetName.exe的可执行文件,并使用以下参数调用:

GetName.exe -t -s  

argc == 3
argv [0] ==“GetName.exe”
argv [1] ==“-t”
argv [2] ==“-s”

除此之外 ,根据定义。为什么水是湿的,由H 2 O组成?

编辑 在评论中回答问题:

的argc。所描述的argv为可执行文件提供了一种获取方式,并使用命令行参数。以下是一个如何运作的简单示例:

假设 可执行文件GetName.exe的名称,并再次调用,如:

GetName.exe -t -s    

给出以下代码:

#include <stdio.h>

int main (int argc, char *argv[])
{
     int i=0;
     printf("\ncmdline args count=%s", argc);

    /* First argument is executable name only */
    printf("\nexe name=%s", argv[0]);

    for (i=1; i< argc; i++) 
    {
         printf("\narg%d=%s", i, argv[i]);
    }

    printf("\n");
    return 0;
 }

输出结果为:

cmdline args count=3
 exe name=./GetName.exe
 arg1=-t
 arg2=-s