很多人学了很长时间的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()函数参数相关推荐

  1. 【C】关于main()函数参数的问题;

    main()函数参数的一般形式: int main(int argc, char *argv[]) int argc用来表示参数的数量,argv[]数组是用来存放参数的值: 但是在linux下的gcc ...

  2. C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程

    目录 一.main 函数写法 二.main 函数参数简介 三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件 b.打开 cmd 命令行窗口执行 exe 文件 c.打 ...

  3. Linux中 C++ main函数参数argc和argv含义及用法

    Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...

  4. Main函数参数argc,argv说明

    C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv[]) ...

  5. main函数参数解析

    int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下: void main ...

  6. C语言main函数参数详解

    main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三 ...

  7. main函数参数规范

    main函数参数规范 给main函数传递参数,非常容易,而且每个人都有自己的编写方式: 这里介绍一下标准C库的getopt规范,该规范定义了两类参数:短参数和长参数 #include <unis ...

  8. C语言中main函数参数使用

    在C99标准中定义main函数两种正确的写法 int main(void); int main(int argc, char* argv[]); 常见的不标准写法 void main() main() ...

  9. 【C语言】字符串(main函数参数)

    文章目录 字符串 字符数组 字符串定义 字符串输入输出scanf&printf 字符串数组 main函数参数 字符串 字符数组 #include <stdio.h>int main ...

  10. C++:Main函数参数列表及参数类型转换

    有三个问题待解决: 1.C/C++ main函数参数意义 2.怎么向main函数传参 3.传进来的参数类型是什么?怎么类型转换? 下面来分别分析! 首先,看代码,然后分析. int main(int ...

最新文章

  1. 高级软件工程的第一次作业:回顾自己本科设计
  2. ThinkPHP 分页实现
  3. 互联网协议 — BGP 边界网关协议 — Overview
  4. mxnet insightface特征提取
  5. pytorch 过采样
  6. 管理和安装 chart - 每天5分钟玩转 Docker 容器技术(168)
  7. Spring小知识——profile配置
  8. Windows系统IntelliJ IDEA安装配置
  9. 自己实现一些JQuery插件-----------------------------------(一)
  10. Android如何实现NoActionBar以及Theme.NoTitleBar.Fullscreen效果
  11. 利用正则表达式提取网页中Table内的数据
  12. 用cmd来向mysql导入sql文件
  13. NotePad 常用设置
  14. 黑马程序员顺义校区php_传智播客·黑马程序员顺义新校区来校路线介绍
  15. python utf编码 查询_python数据库查询中文乱码
  16. 2021年武汉理工大学计算机考研复试详解 计算机学硕
  17. 教你查看预装Win8电脑内置系统激活密钥(Win8 OEM Key)
  18. 管理员已阻止你运行此应用。有关详细信息,请与管理员联系。windows10
  19. 解决: void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:requ
  20. 基于Arduino的魔兽世界挂机装置

热门文章

  1. Service Mesh 初体验
  2. RabbitMQ 的延时队列和镜像队列原理与实战
  3. Cloud Toolkit 部署应用到阿里云轻量应用服务器
  4. Node.js 应用故障排查手册 —— 利用 CPU 分析调优吞吐量
  5. 如何在Flutter上优雅地序列化一个对象
  6. 性能提升一个数量级,大杀器来了!| 文内福利
  7. ​如何成为一个更好的 React 开发者?
  8. 细数阿里达摩院2019年的十个Flag
  9. 面趣 | 马云在面试中出的一道题,据说只有一个人答对……
  10. python读取oracle数据到hvie parquet_创建Hive表来从parquet / avro模式读取parquet文件