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有 ... 
随机推荐
- Solaris10 下mysql5.5.12的安装
			http://blog.csdn.net/ocean20/article/details/6417845 http://howtolamp.com/lamp/mysql/5.6/installing/ 
- oracle extract函数
			oracle Extract 函数 //oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 //语法如下: EXTRA ... 
- Selenium2+Python自动化-处理浏览器弹窗(转载)
			本篇转自博客:上海-小T 原文地址:http://blog.csdn.net/real_tino/article/details/59068827 我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自 ... 
- The 12 Most Controversial Facts In Mathematics
			Walter Hickey / BI Walter Hickey/BI Walter Hickey/BI Walter Hickey/BI Walter Hickey/BI Walter Hickey ... 
- Python并发编程-redis-3.0.5 源码安装
			1.简介 Remote Dictionary Server(Redis)是一个基于 key-value 键值对的持久化数据库存储系统.redis 和 Memcached 缓存服务很像,但它支持存储的 ... 
- asp.net中使用ueditor 1.3.6上传图片问题
			在asp.net中使用ueditor 1.3.6版本上传图片时,出现上传成功但是,图片无法正常显示的问题,解决方法如下: 只需要将imageUp.ashx中的info = up.upFile(cont ... 
- Android数据展示之ListView
			Android应用程序中经常需要使用ListView展示数据,一个ListView通常将数据填充到布局文件中,在填充的过程中需要知道连接数据与ListView的适配器.适配器是一个连接数据和Adapt ... 
- OkHttp 官方Wiki之【使用案例】
			原文位置:https://github.com/square/okhttp/wiki/Recipes Recipes 食谱/知识点清单 We've written some recipes that ... 
- vue-router登录校验后跳转到之前指定页面如何实现
			两个需求:1.用户点击购买需要下单,并跳转到订单页面,但是如果用户没有登录的话,中间有登录验证,会拦截:2.点击购买的时候,登录校验成功了,跳转到订单页面时,订单已创建,去付款即可.3.处理拦截至登录 ... 
- rsync同步数据---把左边的文件全部拷贝到右边
			背景,配置好了ssh 使用rsa pulbic key的方式登陆远程服务器.//ssh-keygen -t rsa -b 2048 -f andy-rsync-key -P '' https://he ... 
