解析main函数的参数的作用与应用场景
前言
刚学习C语言的你,多数都会使用ide,比如visual studio等等,一般生成的代码模板都是这样的
1 |
|
通常来说 int argc, char const *argv[]
,用ide点点按钮编译文件的话,这两个参数你是用不到的,因为ide都会集成一种叫做构建系统的东西用来快速编译整个工程,但是你难道没有好奇过这两个参数有啥用吗😕。今天我就简单解析一下这两个参数的作用与应用场景
定义与解析
百度百科是这样定义这两个参数的
ARGc和ARGv中的ARG指的是**”参数”(外语:ARG*uments, argument counter 和 argument vector ) [1]
第一个是提供给主函数的参数个数,
第二个是参数的字符串数组的指针。 [1]
我给你翻译成人话,argc
是指从命令行传入参数的个数,argv
是参数名字的数组
举个例子你马上就懂了
假如有下面的代码main.c
1 |
|
然后我们用gcc进行编译,如果你不知道什么是gcc,没关系,你现在只需要知道gcc是编译c语言的工具就行,
1 | # -o表示指定编译后的程序名字为main.exe |
然后我们在命令行执行main.exe
1 | # 必须加上 ./ 不然命令行无法找到main.exe的路径(./ 表示当前路径) |
之后就是重要部分了,在程序执行后,我们加上了三个数字111 222 和333,这里有三个数字,所以argc=3,argv=[“D:\coding\workspace\C_CPP\study\main.exe”,”111”,”222”,”333”]
运行结果如下
1 | 参数 0是: D:\coding\workspace\C_CPP\study\main.exe |
argc=3,意思就是传进的参数有 3 个,那为什么argv数组有四个元素呢?
因为argv[0]默认是程序的存放路径,这个记住就行
最后有一个点要说一样,main函数的参数不一定非要要叫argc和argv,而是可以自定义的,所以你写成a和b都可以,argc和argv是约定成俗的一个名字。
1 |
|
应用
看完上面的内容,你估计有个疑问,这玩意好像没啥用啊?
别急,我给你说一个例子你就懂了
假设你开发了一个命令行工具 app.exe ,他的作用是对txt文件进行处理(具体是什么功能省略)
你可以这样写程序
1 |
|
然后你就可以这样使用,来把你要处理的文件名通过命令行传输进去,这样程序就能知道你要对那个文件进行操作。
1 | D:\coding\workspace\C_CPP\study>.\app.exe file.txt |
当然这只是一个简单的例子,以后学习Linux的时候,你会接触到更多这方面的使用。