文章目录
- 一、命令行和main()函数的关系
- 1.1 main()的参数
- 1.2 命令行和main函数的关系
- 二、为什么将命令行和main()函数联系起来
一、命令行和main()函数的关系
1.1 main()的参数
main() 函数是有参数的,虽然现在我们一般不写,但它是可以有的。
有些地方我们可以看到 main() 函数的参数。
void main(int argc,char* argv[])
argv 表示一个指针数组,而 argc 则是表示该数组中元素的个数。
下面我们来看一下这个数组到底是个什么数组。
1.2 命令行和main函数的关系
- 我们先用部分代码查看一下
argv数组中存放的是什么:
#include<stdio.h>
int main(int argc, char* argv[])
{
int i = 0;
for(i = 0; i < argc; i++)
{
printf("argv[%d]:%s\n", i, argv[i]);
}
return 0;
}
然后我们将文件通过 gcc 编译一下,形成一个可执行程序,执行程序后看一下结果:

可以看出来,argv 数组中的内容跟我们在命令行输入的内容有关。
- 我们来看命令行:

这其实是 bash 给我们打印出来的命令行字符串,起提示作用,提示我们在此处输入命令,然后是 bash 要接收命令行字符串,整个流程程序大概是这样:

然后,程序会将接收到的命令(字符串)按空格分割成小字符串:

再然后,多个小字符串会构成一张命令行参数表,并将该表传给要执行的程序主函数:

从上图我们可以看到,argv[0] 指向的字符串是路径+可执行程序,而 argv[1]、argv[2] 等指向的是选项,要注意一点的是该表必须以 NULL 结尾。
二、为什么将命令行和main()函数联系起来
那么为什么将命令行和main()函数联系起来呢?
因为想要通过不同的选项,让同一个程序执行它内部的不同代码,从而实现不同功能。
示例:

执行结果:

通过命令行参数,将选项传递给 main 函数,通过不同的选项就可以执行不同的命令了。
因为实现 “ 同一个程序,不同功能 ” 是硬性要求,所以几乎所有的语言都要支持命令行参数。
Linux 中指令后跟的都是选项,比如我们常用的:

基于命令行的计算器
上面我们可以看到可以通过命令行执行不同功能,那我们可以写一个基于命令行的计算器练习一下:

执行结果:

本文到这里就结束了,如果对您有帮助,希望得到一个赞!🌷
如有错漏,欢迎指正!😄
291

被折叠的 条评论
为什么被折叠?



