我正在阅读压缩库并遇到主要功能的定义为
int main(int argc, char *argv[])
并且不明白为什么他们使用这种类型的定义。我不是专业人士。请尽可能简单地提供答案,以便我能够轻松理解。
答案 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