main()函数的相关知识
main函数其实是有参数的:
int main(int argc , char* argv[],char* envp[])
这里有三个参数 :
第一个:argc是个整形变量,表示命令行参数的个数(含第一个参数,就是含.exe的字符)
第二个:argv是个字符指针的数组,每个元素是一个字符指针,指向一个字符串,这些字符串就是命令行中的每一个参数
第三个:envp是字符指针的数组,数组的每一个原元素是一个指向一个环境变量(字符串)的字符指针
int main(int argc, char* argv[], char* envp[])
{
int i=0;
for(i=0; i<argc; i++)
{
printf("%s\n",argv[i]);
}
return 0;
}
这里的输出结果是可执行程序的.exe文件的路径
在argv数组的最后一个元素存放的是NULL,这是argv数组的结束标志
int main(int argc,char* argv[],char* envp[])
{
int i=0;
while(envp[i] != NULL)
{
printf("%s\n",envp[i]);
i++;
}
return 0;
}
在这里输出的结果是环境变量
envp数组的最后一个元素也存放的是NULL指针
题目
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
例如:命令行参数输入:test.exe -a 1 2
执行1+2输出3
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//加法
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 x, y;
int input = 1;
int ret = 0;
int(*p[5])(int x, int y) = { 0, add, sub, mul, div };//转移表
while (input){
printf("************************************\n");
printf(" 1:add 2:sub \n");
printf(" 3:mul 4:div \n");
printf("************************************\n");
printf("请选择:");
scanf("%d", &input);
if ((input<=4 && input>=1)){
printf("输入操作数:");
scanf("%d %d", &x, &y);
ret = (*p[input])(x, y);
}
else
printf("输入有误\n");
printf("ret=%d\n", ret);
}
getchar();
return 0;
}
运行结果如下: