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有 ...
随机推荐
- arcgis andriod GeometryEngine使用
intersectionMenuItem.setChecked(true); showGeometry(GeometryEngine.intersection(inputPolygon1, input ...
- UML九种图 之 用例图和类图
前言 近期写UML文档,看视频的时候感觉掌握的还能够,当真正写文档的时候才发现不是一件easy的事.写文档自己又翻开自己的笔记看了一遍又一遍. 以下就给大家介绍一下我画的几张图: 用例图 ...
- 【tyvj五月有奖赛 暨Loi 55 Round #1】
解题报告: 傻逼错误天天犯QAQ 第一题:简单DP,f[i][j]表示第 i 道题选 j 的最大得分,可以从f[i-1][j-1],f[i-1][j],f[i-1][j+1]转移过来,其实是可以滚动数 ...
- 数学图形之将曲线(curve)转化成曲面管
在我关于数学图形的博客中,一开始讲曲线的生成算法.然后在最近的章节中介绍了圆环,还介绍了螺旋管以及海螺的生成算法.一类是曲线,一类是环面,为什么不将曲线变成环的图形,毕竟曲线看上去太单薄了,这一节我将 ...
- evaluate-division
https://leetcode.com/problems/evaluate-division/ public class Solution { private Map mp; private cla ...
- 掌握Sed命令
带书签PDF版,喜欢的话,欢迎多提意见和建议,你的支持是血蝙蝠最大的前进动力! http://download.csdn.net/detail/challenge_c_plusplus/6480007 ...
- CREATE DATABASE failed
由于环境需要, 故修改SQL Server 2012的默认的数据库的数据文件和日志文件的位置. 如下: 创建数据库, 遭遇报错. 错误信息: A file activation error occur ...
- WIN32 SDK对COM的支持
- MFC apps must not include windows.h
用VS2008建立一个DLL项目,一开始的时候不想用MFC, 所以选择的是使用标准Windows库. 使用了一段时间后又想用MFC了,所以把选项改成使用在共享 DLL 中使用 MFC. 但是编译的时候 ...
- Bootstrap3免费单页面模板-Shuffle
在线演示 本地下载 这是一款当前最热门的模板,单页面模板现在越来越时兴,它简洁的页面和每一次滑动都带来的全新视角.非常值得收藏和使用!