main()函数参数
很多人学了很长时间的C语言,可能还不知道mian()函数也是有参数的,甚至会说,main()函数哪来的参数,我从来都没见到过,更没有使用过,然而,不得不说,main()函数确实是有参数的。
main函数的参数:
main(int argc , char *argv [] , char *envp)
1、int argc: argv数组中元素的个数(不包括NULL)
2、char *argv[]:指针数组:数组里面放的是指针,保存每个字符串(把传递的每一个参数(第一个参数是固定的:可执行程序的相对路径,其余的是用户输入的)都看做是一个字符串)的首地址,最后还有一个空指针(NULL)。
3、char *envp[]:指针数组:包含两个参数 —->> 系统环境变量的地址和一个空指针(NULL)
给出一个程序来具体说明main()函数的参数:
程序功能:
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“ -a”选项执行加法,“ -s”选项执行减法,“ -m”选项执行乘法,“ -d”选项执行除法,后面两个参数为操作数。
例如:输入test.exe -a 1 2
执行1 + 2输出3
#include<stdio.h>int main(int argc, char *argv[], char *envp[]) //主函数的参数//主函数接收的参数都放在第二个参数:指针数组中,保留了其首元素地址
{if (argc < 4) //当argc < 4时,就不能传3个以上的参数,程序就不能正确执行{printf("arguments error: The number of arguments is too little!\n");system("pause");return 0;}if (*(argv[1]) == '-') //先判断第一个参数的第一个字符是否满足条件{//int num1 = 0;//int num2 = 0;switch (*(++argv[1])) //接着判断第一个参数的第二个字符是什么,注意这儿是前置++,不是后置++{case 'a'://while (*(argv[2])) //麻烦的方法取第二个参数和第三个参数的值//{// num1 = num1 * 10 + (*(argv[2]++) - 48);//}//while (*(argv[3]))//{// num2 = num2 * 10 + (*(argv[3]++) - 48);//}//printf("%d\n", num1 + num2);printf("%d\n", atoi(argv[2]) + atoi(argv[3])); //atoi函数 -->> 是把字符串转换成整型数的一个函数break;case 's':printf("%d\n", atoi(argv[2]) - atoi(argv[3]));break;case 'm':printf("%d\n", atoi(argv[2]) * atoi(argv[3]));break;case 'd':printf("%d\n", atoi(argv[2]) / atoi(argv[3]));break;default:printf("参数输入错误\n");break;}}else;system("pause");return 0;
}
运行程序:
报错:
因为此时并没有为程序传递需要的参数,給程序传参的方式有两种。
1、在dos环境下运行程序并传递相应的参数
2、在所用的编译器上传参并运行程序
我用的是VS2013,在此编译器下传参并运行的方法是:
依次点击:视图 –> 解决方案资源管理器,现在就能看到你建的项目了,然后右键项目名,依次点击:属性 –> 通配属性 –> 调试 ,在命令参数里输入想要传递的参数(第一个参数:程序路径不需要输入,编译器会自己给出),此时就能正确运行程序了。
感兴趣的可以自己研究!!!
main()函数参数相关推荐
- 【C】关于main()函数参数的问题;
main()函数参数的一般形式: int main(int argc, char *argv[]) int argc用来表示参数的数量,argv[]数组是用来存放参数的值: 但是在linux下的gcc ...
- C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程
目录 一.main 函数写法 二.main 函数参数简介 三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件 b.打开 cmd 命令行窗口执行 exe 文件 c.打 ...
- Linux中 C++ main函数参数argc和argv含义及用法
Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...
- Main函数参数argc,argv说明
C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv[]) ...
- main函数参数解析
int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下: void main ...
- C语言main函数参数详解
main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三 ...
- main函数参数规范
main函数参数规范 给main函数传递参数,非常容易,而且每个人都有自己的编写方式: 这里介绍一下标准C库的getopt规范,该规范定义了两类参数:短参数和长参数 #include <unis ...
- C语言中main函数参数使用
在C99标准中定义main函数两种正确的写法 int main(void); int main(int argc, char* argv[]); 常见的不标准写法 void main() main() ...
- 【C语言】字符串(main函数参数)
文章目录 字符串 字符数组 字符串定义 字符串输入输出scanf&printf 字符串数组 main函数参数 字符串 字符数组 #include <stdio.h>int main ...
- C++:Main函数参数列表及参数类型转换
有三个问题待解决: 1.C/C++ main函数参数意义 2.怎么向main函数传参 3.传进来的参数类型是什么?怎么类型转换? 下面来分别分析! 首先,看代码,然后分析. int main(int ...
最新文章
- 高级软件工程的第一次作业:回顾自己本科设计
- ThinkPHP 分页实现
- 互联网协议 — BGP 边界网关协议 — Overview
- mxnet insightface特征提取
- pytorch 过采样
- 管理和安装 chart - 每天5分钟玩转 Docker 容器技术(168)
- Spring小知识——profile配置
- Windows系统IntelliJ IDEA安装配置
- 自己实现一些JQuery插件-----------------------------------(一)
- Android如何实现NoActionBar以及Theme.NoTitleBar.Fullscreen效果
- 利用正则表达式提取网页中Table内的数据
- 用cmd来向mysql导入sql文件
- NotePad 常用设置
- 黑马程序员顺义校区php_传智播客·黑马程序员顺义新校区来校路线介绍
- python utf编码 查询_python数据库查询中文乱码
- 2021年武汉理工大学计算机考研复试详解 计算机学硕
- 教你查看预装Win8电脑内置系统激活密钥(Win8 OEM Key)
- 管理员已阻止你运行此应用。有关详细信息,请与管理员联系。windows10
- 解决: void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:requ
- 基于Arduino的魔兽世界挂机装置
热门文章
- Service Mesh 初体验
- RabbitMQ 的延时队列和镜像队列原理与实战
- Cloud Toolkit 部署应用到阿里云轻量应用服务器
- Node.js 应用故障排查手册 —— 利用 CPU 分析调优吞吐量
- 如何在Flutter上优雅地序列化一个对象
- 性能提升一个数量级,大杀器来了!| 文内福利
- ​如何成为一个更好的 React 开发者?
- 细数阿里达摩院2019年的十个Flag
- 面趣 | 马云在面试中出的一道题,据说只有一个人答对……
- python读取oracle数据到hvie parquet_创建Hive表来从parquet / avro模式读取parquet文件