在学习之前我们先看看“最简单”的helloworld 程序
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("hello world\n");
return 0;
}
我想大家对这段程序应该是轻车熟路了,但是大家有没有想过main后面的括号里是什么东东
众所周知,main函数是程序执行的起点,而函数名后面的括号是他的参数列表,而我们在什么时候传递这个参数呢?在讲解之前我们不妨先了解这括号里面的东东都是干啥的。。。
(int argc, char const *argv[])
int argc:(argument count)参数数量,他表示我们命令行中字符串的数量
char const argv[]:(argument value*)参数值,我们看到他是一个字符串数组,代表着我们传入的参数都会传入数组内,我们的程序可以通过这个数组访问到我们传入的参数
光说不练假把式,我们通过写代码了解他的如何用的。。。
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("参数数量:%d\n",argc);
printf("第【%d】个参数值:%s\n",1,argv[0]);
return 0;
}
我们通过gcc编译并运行,出现以下结果
image.png
我们通过运行出来的结果可以发现,我们运行时就写了编译后的可执行文件名,并没有传入参数,但是参数的数量是1,值是我们在命令行写的运行命令(./hello),这是因为我们的文件名被存入了argv[]里面了,说以数量是1。
接下来,我们稍微改造一下刚才的程序
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("参数数量:%d\n",argc);
for (int i = 0; i < argc; i++)
{
printf("第【%d】个参数值:%s\n",i,argv[i]);
}
return 0;
}
image.png
我们传入的参数都被一一访问到,用法还是蛮简单的。
字符串参数转换为其他适当的数值类型,如下装换为int
如果你传入1,不通过一些函数转换的话,是不行的
image.png
如上图,我使用的是<stdlib.h>中声明的atoi函数
其他函数
atof() ——将字符串参数转换成double类型
atoi() ——将字符串参数转换成int类型
atol() ——将字符串参数转换成long类型
注意:注意检查参数的个数,在处理命令行参数前,先检查参数数目(根据自己的情况)
if(argc >1){
//...
}











网友评论