每个C程序都必须有一个main函数,main函数又称为主函数,是执行程序的起点,它被称之为函数,是否会像平时使用函数时需要自己的参数呢?
答案是肯定的,那么他都有那些参数呢?
main函数的在vs2017环境下调试,可以看到main函数里的三个参数
#include
int main()
{
return 0;
}
_argc
_argv
_get_initial_narrow_environment(维护环境变量)
main函数在被调用的时候,这三个参数也传向main,只是没有被main函数接到,也没用。那么在调用main函数时,在main函数里面写相对应的参数,main函数就可以接到这些值。
为了详细了解main函数的参数,写出以下代码:
#include
int main(int _argc,char *_argv[],char *_get_initial_narrow_environment[])
{
int i = 0;
for (i = 0; i < _argc; i++)
{
printf("%s\n",_argv[i]);
}
return 0;
}
程序输出如下图所示:
这是可执行程序的名字。
鼠标右击工程的名字main->属性->配置属性->调试->命令行参数,修改命令行参数并且应用如下:
再来执行程序,输出如下图所示:
注意到工程的命令行参数可以通过**_argv这个数组获取到,命令行参数的个数可以由_argc**获取到。
注:_argv数组的最后一个元素存放了一个NULL的指针。
代码改了如下:
int main(int _argc, char *_argv[], char *_get_initial_narrow_environment[])
{
int i = 0;
while (_argv[i] != NULL)
{
printf("%s\n", _argv[i]);
i++;
}
return 0;
}
输出结果如下:
验证得出_argv数组的最后一个元素存放了一个NULL的指针。
了解了前面连个参数,最后一个参数是什么呢?
写出一下代码:
int main(int _argc, char *_argv[], char *_get_initial_narrow_environment[])
{
int i = 0;
while (_get_initial_narrow_environment[i] != NULL)
{
printf("%s\n", _get_initial_narrow_environment[i]);
i++;
}
return 0;
}
输出结果如下:
结果显示都是环境变量(内容太多,截取部分)。
注:_get_initial_narrow_environment数组的最后一个元素存放了一个NULL的指针。
_argc是个整型变量,表示命令行参数的个数(含第一个参数)。
_argv是个字符指针的数组,每个原元素都是一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。
_get_initial_narrow_environment是字符指针的数组,数组的每一个原元素是一个指向一个环境变量(字符串)的字符指针。
####4.举个例子
#include
#include
int Add(int a, int b)
{
return a + b;
}
int Sub(int a, int b)
{
return a - b;
}
int Mul(int a, int b)
{
return a * b;
}
int Div(int a, int b)
{
return a / b;
}
int main(int _argc,char *_argv[],char *_get_initial_narrow_environment[])
{
int ret = 0;
if (_argc != 4)
{
printf("参数有误\n");
}
switch (*(_argv[1] + 1))
{
case 'a':
ret = Add(atoi(_argv[2]), atoi(_argv[3]));
break;
case 's':
ret = Sub(atoi(_argv[2]), atoi(_argv[3]));
break;
case 'm':
ret = Mul(atoi(_argv[2]), atoi(_argv[3]));
break;
case 'd':
ret = Div(atoi(_argv[2]), atoi(_argv[3]));
break;
default:
printf("参数有误:%s", _argv[1]);
break;
}
printf("ret=%d\n", ret);
return 0;
}
_argc,_argv描述命令行参数息,_get_initial_narrow_environment描述环境变量
如有不足之处,欢迎指正!!