【浅谈】main函数的三个参数
【浅谈】main函数的参数
我们平时使用main函数时,在main函数参数这一栏常常省略不写,或者填上(void)。实际上main函数是具有参数的,并且它的参数有很大作用。今天我们来看看main函数的参数。
main函数的参数有哪些?
int main (){return 0;}
int main (int argc, char *argv[], char *envp[]){return 0;}
int main(int argc, char *argv[], char *envp[]){int i = 0;for (i = 0; i < argc; i++){printf("%s\n", argv[i]);}return 0;}
在控制台输出结果中可以看到,第一行显示的是我们编译的C文件的路径,而下面则是我们刚才在命令参数那栏写下的一些以空格隔开的字符。
如果大家有接触过linux命令行的话,应该有见到过或者使用过如下的代码:
ls -l <linux> //这是列出当前目录下所有文件的详细参数
事实上argv[]中最后一个元素恒存放一个空指针,作为argv数组的结束标志
我们在windows命令行指令中(cmd)也能添加类似的命令行参数。按下电脑的win + R键调出运行窗口,在输入栏输入cmd然后回车,出现黑色窗口,这就是我们的终端窗口:
紧接着在黑框中输入存放调试文件目录的那个磁盘的卷名。
再使用cd命令将当前的路径转到存放我们当前调试的文件的DEBUG文件目录下,再使用dir命令列出当前目录下的文件(与Linux中ls命令相似):
我们再输入**.exe**后缀的文件名后面加上一些字符,按回车运行之(即在cmd下执行刚才的调试程序,最终效果与刚才的程序效果相同):
小伙伴们有没有发现,这和在编译器下运行的情况很相似,唯一的不同是我们在cmd窗口手动添加了几个字符。
那么我们不妨展开联想,是否可以将这个特性运用到实际中去…
main函数参数有什么作用呢?
enum calc
{ADD = 'a',SUB = 's',MUL = 'm',DIV = 'd'
};int Add(int a, int b)
{return a + b;
}int Sub(int a, int b)
{return a + b;
}int Div(int a, int b)
{return a / b;
}int Mul(int a, int b)
{return a * b;
}int main(int argc, char *argv[], char *envp[])
{if(argc != 4) {prinf("usage : .exe sum1 [a | s | m | d] sum2\n");return -1;}int a = atoi(argv[1]);int b = atoi(argv[3]);int ret = 0;//switch (*(argv[1] + 1))switch( argv[2] ){case ADD: ret = Add(a, b);break;case SUB: ret = Sub(a, b);break;case MUL: ret = Mul(a, b);break;case DIV: ret = Div(a, b);break;default: printf("参数有问题\n");return -1;}printf("%d\n", ret);return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
int main(int argc, char *argv[], char *envp[])
{int i = 0;while (envp[i] != NULL){printf("%s\n", envp[i]);i++;}return 0;
}
全文完,感谢浏览
【浅谈】main函数的三个参数相关推荐
- 关于main函数的三个参数
每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某 个地方.有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 在哪个地方, 以下几点说明都是适合的. 1. ...
- 浅谈linux的命令行解析参数之getopt_long函数
前言 在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNU C提供的函数getopt.getopt_long.getopt_long_only函数来解析 ...
- oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念
Nested loop join:
Outer - phpStudy...
浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...
- 三菱d700变频器模拟量控制_浅谈三菱FR—D700变频器基本参数的设定
龙源期刊网 http://www.qikan.com.cn 浅谈三菱 FR - D700 变频器基本参数的设定 作者:韩雪 来源:<卷宗> 2017 年第 17 期 摘 要:本文介绍了变频 ...
- http://www.dewen.net.cn/q/16222/C++排序中的sort函数第三个参数的疑问
C++排序中的sort函数第三个参数的疑问 唐图 3 票 37 #include<stdio.h> #include<string.h> #include<algorit ...
- 浅谈async函数await用法
async和await相信大家应该不陌生,让异步处理变得更友好. 其实这玩意儿就是个Generator的语法糖,想深入学习得去看看Generator,不然你可能只停留在会用的阶段. 用法很简单,看代码 ...
- main函数第3个参数envp装的是什么(envp:环境变量)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/btwsmile/article/det ...
- range函数python三个参数_range()函数三种参数的用法
第8篇分享 range()是python的内置函数,用的地方挺多的,目前我经常会在for循环中作为循环的次数来使用,其实range()的用法不仅仅如此,本文给大家介绍下range()函数的三种参数的基 ...
- 浅谈云函数的代理IP利用面
浅谈云函数的代理IP利用面 前言 本篇文章介绍如何通过 Serverless(云函数) 实现各种扫描器探测功能,以达到绕过态势感知.WAF等安全设备,增大蓝队研判人员溯源难度,实现封无可封,查无可查的 ...
最新文章
- FreeTextBox1.6版本控件使用总结(未完)
- excel oledb mysql_OLEDB操作Excel
- 上世纪八九十年代的收录放音机拆解
- (46)System Verilog 类中变量随机激励权重分布
- apache的poi中设置Excel的单元格样式(HSSFCellStyle)和表格(HSSFSheet)
- python批量提取哔哩哔哩bilibili视频
- python--re模块
- c4d阿诺德渲染器支持a卡吗_请问C4D的OC渲染器支持的显卡是越好越快吗?
- 2023南京财经大学计算机考研信息汇总
- 基于ENVI进行遥感影像裁剪
- %3cp%3e 修改 值 html,UEditor在JavaWeb中的应用
- mysql ip访问限制解除
- Redis之时间轮机制(五)
- Linux(进程概念详解)
- 实战 | 如何使用微搭低代码实现按条件过滤数据
- 吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
- 如何将图片背景变为透明色
- 泪目!视频剪辑教程自学百度云资源
- 谷歌L3到L7扎堆升职,股票refresh多过别人年薪!
- 国内邮箱免费邮箱注册哪个好?
热门文章
- 2022年数维杯国际大学生数学建模挑战赛C题如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病解题过程
- 使用TinyProxy搭建代理服务器
- 【SpringBoot】SpringBoot @ConfigurationProperties 注解 用法与加载static静态属性
- python字母转换视频_python将视频转换为全字符视频
- 友盟社会化分享 QQ空间不显示分享的图片 (已解决)
- Archive for the 'TED' Category TED视频:Tan Le 能读懂脑电波的耳机
- BadUsb----结合实例谈此类外设的风险
- 跟我一起写makefile
- 点对点文件服务器,点对点文件同步工具(Syncthing)
- 笔记 | 百度飞浆AI达人创造营:深度学习模型训练和关键参数调优详解