C-main函数剖析。
对于main函数。我想不论什么一个接触到C语言的都不会陌生,可是说起main()函数有參数,你可能会产生非常多疑问了。
首先,我们来看下msdn,这个里面对main()函数有具体的说明。
在这里,我们能够看到main()函数事实上是含有三个參数的,各自是
int argc, char *argv[ ], char *envp[ ]
这三个參数事实上就是main函数的參数。
在c的编译器中。通常是同意main函数是没有參数的。
1.argc (argument count)
这第一个參数是int类型的argc,argc是一个整数。从字面上的意思我们就知道,他说的是给參数计数,指定有多少个參数被传递给命令行的程序。argc至少是1。
2.argv(argument value)
argv 第二个參数是一个指向字符串的指针数组。
命令行中的每一个字符串被存储到内存中,而且分配一个指针指向它。它存放了命令行的參数。
在通常,系统使用空格把各个字符串隔开,然后把程序本身的名字赋给argv[0],把系统最后一个字符串赋给argv[1]。
3.envp
这个不经常使用,用来存放系统的环境变量,而且是以NULL结尾。
envp能够是char*[]类型也能够是char**类型。本文上面的样例使用的是前者。假设使用宽字符集,则应使用wmain取代main,并使用wchar*[]或wchar**类型的envp,在程序运行过程中,envp所存的环境变量是以字符串数组保存,当程序运行时须要环境变量做參考时就须要它。而且,当你更改了环境变量想要恢复,也能够到这个里面去寻找。
接下来附上一道关于main函数參数使用的笔试题。
1.使用main函数的參数,实现一个整数计算器,程序能够接受三个參数,第一个參数“-a”选项运行加法。“-s”选项运行减法,“-m”选项运行乘法,“-d”选项运行除法,后面两个參数为操作数。
比如:输入test.exe -a 1 2
运行1+2输出3
//1.使用main函数的參数,实现一个整数计算器,程序能够接受三个參数,第一个參数“ - a”选项运行加法,“ - s”选项运行减法,“ - m”选项运行乘法,“ - d”选项运行除法,后面两个參数为操作数。
//比如:输入test.exe - a 1 2
//运行1 + 2输出3
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int num1 = atoi(argv[2]);
int num2 = atoi(argv[3]);
int ret = 0;
if (strcmp("-a", argv[1]) == 0)
{
ret = num1 + num2;
}
else if (strcmp("-s", argv[1]) == 0)
{
ret = num1 - num2;
}
else if (strcmp("-m", argv[1]) == 0)
{
ret = num1 * num2;
}
else if (strcmp("-d", argv[1]) == 0)
{
ret = num1 / num2;
}
printf("%d\n", ret);
system("pause");
return 0;
}
初学小白,希望大家多多提意见!
!
C-main函数剖析。的更多相关文章
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)
俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中 ...
- 菜鸟nginx源代码剖析 框架篇(一) 从main函数看nginx启动流程
菜鸟nginx源代码剖析 框架篇(一) 从main函数看nginx启动流程 Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...
- Redis 源码简洁剖析 07 - main 函数启动
前言 问题 阶段 1:基本初始化 阶段 2:检查哨兵模式,执行 RDB 或 AOF 检测 阶段 3:运行参数解析 阶段 4:初始化 server 资源管理 初始化数据库 创建事件驱动框架 阶段 5:执 ...
- [C#] 了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数
了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数 目录 简介 特点 方法的参数 方法的返回值 与批处理交互的一个示例 简介 我们知道,新建一个控制台应用程序的时候,IDE 会同时创建 ...
- 关于一些规范:main()函数的返回值 mingw和mingw-w64编译器的区别
深度剖析c语言main函数---main函数的返回值 - 编程随笔与杂谈 - CSDN博客 https://blog.csdn.net/z_ryan/article/details/80979008 ...
- asp.net core 3.1 入口:Program.cs中的Main函数
本文分析Program.cs 中Main()函数中代码的运行顺序分析asp.net core程序的启动,重点不是剖析源码,而是理清程序开始时执行的顺序.到底用了哪些实例,哪些法方. asp.net c ...
- opencv-6-图像绘制与opencv Line 函数剖析
opencv-6-图像绘制与opencv Line 函数剖析 opencvc++qt 开始之前 越到后面, 写的越慢, 之前还抽空去看了下 学堂在线那篇文章提供的方法, 博客第一个人评论的我, 想想还 ...
- 如何写好 C语言 main 函数!你准备好编写 C 程序了吗?
学习如何构造一个 C 文件并编写一个 C main 函数来成功地处理命令行参数. 我知道,现在孩子们用 Python 和 JavaScript 编写他们的疯狂"应用程序".但是 ...
- 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。
异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. ...
- eclipse的maven项目,如何使用java run main函数
项目使用maven管理,一般说来就使用jetty:run了.但是对于做功能测试和集成测试的用例,需要使用自定义的quickrun来运行进行测试环境的参数设定和功能隔离,google一番发现maven有 ...
随机推荐
- 《TCP/IP具体解释卷2:实现》笔记--IP:网际协议
本章介绍IP分组的结构和主要的IP处理过程,包含输入,转发和输出. 下图显示了IP层常见的组织形式. 在之前的文章中.我们看到了网络接口怎样把到达的IP分组放到IP输入队列ipintrq中去,并怎样调 ...
- 记录一次apache错误:“child pid 29023 exit signal Segmentation fault (11)”
目前做了一台公网的测试机,主要是 php 5.3.3 版本,是 browser --> nginx --> apache --> php 今天因为想要安装一个商城,要求需要 P ...
- SQL:(转)数据库中的锁机制(数据库中有哪些锁)
数据库中的锁机制 锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数 据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统 ...
- 用emoji表情包来可视化北京市历史天气状况!
用emoji表情包来可视化北京市历史天气状况! 最近有了一个突如其来的想法,主要是看到了R社区有大神做了emoji表情包,并已经打通了ggplot的链接,所以想用ggplot结合emoji表情做一 ...
- 使用cxf开发webservice接口
项目中经常用到开发webservice接口,及调用webService接口.这里讲解如何使用cxf开发webService接口. 一.webservice介绍及理解 webservice是一种跨平台, ...
- centos6.8安装具有ngx_cache_purge模块的nginx1.10.3
CentOS-6.8 安装 Nginx1.10.3Nginx 环境准备:安装Nginx需要完成以下依赖的安装 1.gcc 安装:yum install gcc-c++ 2.PCRE pcre-deve ...
- 附1 rabbitmq常用命令
1.rabbitmq的启动和停止 rabbitmq-server (前台启动) rabbitmq-server -detached(后台启动) rabbitmqctl stop(停止) 2.查看rab ...
- DialogPlus
项目地址:https://github.com/orhanobut/dialogplus Demo地址:https://github.com/baiqiantao/DialogPlusTest co ...
- JavaScript操作XML (一)
JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准编程接口 中立于平台和语言 W3C 的标 ...
- WebRequest多线程 超时问题
using System; using System.Collections; using System.Collections.Generic; using System.Net; using Sy ...