环境变量 - main()函数和命令行参数

文章目录

  • 一、命令行和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 中指令后跟的都是选项,比如我们常用的:

在这里插入图片描述
基于命令行的计算器
上面我们可以看到可以通过命令行执行不同功能,那我们可以写一个基于命令行的计算器练习一下:
在这里插入图片描述

执行结果:
在这里插入图片描述


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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值