在平时编写代码的过程中,我们会经常写main函数,这是一个程序必不可少的,main 函数是一个特殊的函数,它是程序执行的入口点,但我们往往都没有在意或使用main函数的参数,但main函数其实是有自己自带的参数类型的,只是我们一般没有用到
main函数中有两个参数(准确来说是三个,不过我们一般不使用(envp环境指针))
int main(int argc,char* argv[]
{
//函数体
return 0;
}
argc:
argv:
argv(argument vector)是一个字符指针数组,其中包含了所有命令行参数的字符串
不过要注意的是一般argv[0]通常是程序的名称,这个字符指针数组从下标1开始使用
平常我们练习代码时,代码程序写好就可以直接编译运行了,但其实我们是可以通过命令行参数给我们写好的程序传递我们需要传递的参数的
这样即使我们写好了我们的代码,我们也可以在程序的外部对我们的程序进行控制
比如我们写了一个模拟计算器代码,我们可以在这个代码运行前传参进行控制
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char* argv [])
{
int s=0;
int num1=atoi(argv[2]);
int num2=atoi(argv[3]);
if(strcmp(argv[4], "+") == 0)
{
s=num1+num2;
printf("%d\n",s);
}
if(strcmp(argv[4], "-") == 0)
{
s=num1-num2;
printf("%d\n",s);
}
if(strcmp(argv[4], "*") == 0)
{
s=num1*num2;
printf("%d\n",s);
}
if(strcmp(argv[4], "/") == 0)
{
s=num1/num2;
printf("%d\n",s);
}
printf("argv[0] = %s\n",argv[0]);
printf("argv[1] = %s\n",argv[1]);
printf("argv[2] = %s\n",argv[2]);
printf("argv[3] = %s\n",argv[3]);
printf("argv[4] = %s\n",argv[4]);
printf("计算结束");
return 0;
}
在命令行传入不同的参数即可控制该程序的执行流程
如:
总之,main 函数的参数提供了一种灵活的方式来控制程序的执行,使程序能够更广泛地适应不同的使用场景和需求。
在我们学习操作系统的一开始,我们会学习许许多多的指令,比如Linux中的ls
、Windows中的cmd
等等
如果你理解的比较深刻你会知道这些指令在根本上就是一个程序