对于main函数。我想不论什么一个接触到C语言的都不会陌生,可是说起main()函数有參数,你可能会产生非常多疑问了。
在这里,我们能够看到main()函数事实上是含有三个參数的,各自是
int argc, char *argv[ ], char *envp[ ]
这三个參数事实上就是main函数的參数。
在c的编译器中。通常是同意main函数是没有參数的。
1.argc (argument count)
这第一个參数是int类型的argc,argc是一个整数。从字面上的意思我们就知道,他说的是给參数计数,指定有多少个參数被传递给命令行的程序。argc至少是1。
2.argv(argument value)
argv 第二个參数是一个指向字符串的指针数组。
命令行中的每一个字符串被存储到内存中,而且分配一个指针指向它。它存放了命令行的參数。
在通常,系统使用空格把各个字符串隔开,然后把程序本身的名字赋给argv[0],把系统最后一个字符串赋给argv[1]。
3.envp
这个不经常使用,用来存放系统的环境变量,而且是以NULL结尾。
1.使用main函数的參数,实现一个整数计算器,程序能够接受三个參数,第一个參数“-a”选项运行加法。“-s”选项运行减法,“-m”选项运行乘法,“-d”选项运行除法,后面两个參数为操作数。
比如:输入test.exe -a 1 2
运行1+2输出3
#include<stdio.h>
#include<windows.h>
int main(int argc,char* argv[])
{
int ret=0;
int num1=atoi(argv[2]);
int num2=atoi(argv[3]);
if(argv!=4)
{
printf("输入错误\n");
return 1;
}
if(argv[1][0]=='-')
{
switch(argv[1][1])
{
case 'a':
ret=num1+num2;
printf("%d\n",ret);
break;
case 's':
ret=num1-num2;
printf("%d\n",ret);
break;
case 'm':
ret=num1*num2;
printf("%d\n",ret);
break;
case 'd':
ret=num1/num2;
printf("%d\n",ret);
break;
default:printf("第二个参数错误\n");
break;
}
}
system("pause");
return 0;
}
后期更新!