C语言Main函数到底有几种,你真的懂吗?

智芯Player 2020-10-24 00:00


点击上方蓝字关注我们




M

a

i

n



乍一看标题,感觉小编小题大做,但凡学过C语言的聚聚,都知道C程序入口就是main函数,且一套程序里面有且仅有一个。但是很多时候我们看到的main函数却并不是千篇一律,格式竟然会有差别,这究竟是为啥?到底哪一种是对的呢?那么我们这儿来聊一聊这些所谓的main函数。

01

main()


简洁明了,直接孤零零的mian()并没有声明返回值,也没有传入形式参数。讲真如果真这么写,大部分编译器会显示警告,并且会返回值编译器默认会认为是int类型。因为在C89标准中写了,这样写是可以的,由于声明的时候没有声明返回的参数类型,所以编译器自动默认返回int类型。




02

void main()


这种形式是初学者经常会使用的形式,因为好多培训机构就是这么教的,但是大多数聚聚并不知道为什么这么写,或者说是谁规定这么写的,来源在哪儿。这里小编告诉大家,在C89/C99/C11等标准文档中都没有提到这种形式。这种形式的写法声明的返回值是void类型,没有形式参数。很明显,函数如果声明返回类型是void类型,那么在程序退出后,我们是不可以获取其退出的状态的。所以小编这么写,即声明main函数的返回值类型为void类型。




03

int main(void)


这种形式的写法也是聚聚们比较常见的写法。这种写法的形式参数类型为void型,意思程序在调用这个函数的时候不需要也不能传入任何形式的参数,这就意味着,这个函数它本身就不能获得命令行传入的参数了。




04

int main ()


不仔细看还以为小编写错了,和上面第3种看起来好像没啥区别,但是细看还是有不同的地方,形式参数没有写viod,直接空在那边。小编给大家写一段代码,当作为例子给大家讲一讲,下面的程序是可以正常运行,learn函数虽然声明为无形式参数传入,但是我们调用它时,却可以传入任何形式的形参或者直接不传任何参数。

#include<stdio.h>void  learn();int main() {     learn(4);    return 0; }void learn(int a){  printf("%d",a);}





05

int main(int argc,char *argv[])


int argc作为形参传入命令行参数个数,char *argv[]作为形参传入命令行参数数组。这种形式的写法是比较正规的,也是C标准中推荐的写法,如果需要从命令行获取参数,那么必须这么写。




06

int main(int argc,char *argv[],char *envp[])


 这种形式的写法包含3个形式参数,当然可以看作是上面第5种写法的升级版,int argc形式参数是传入命令行参数个数,char *argv[]形式参数是传入命令参数数组,char *envp[]形式参数是传入环境变量数组。这种写法只比第5种多了一个参数,但我们可以通过全局变量environ代替envp的作用,可以使用getenv或putenv变量来获取或者设置环境变量,因此在没有特别说明或者是需求的情况下,没有必要写成这种形式。





总结,拜读了大神们的帖子及文章,通过查阅C89/C99/C11标准文档再次确认,里面明确给出了2种标准的写法:

int main(void) { /* ... */ }int main(int argc, char *argv[]) { /* ... */ }

小编写了这么多,就是想告诉大家,想要提高代码的通用性及可移植性,小编建议大家采用以上2种形式来敲我们的main函数。如果确定一个函数不需要传入任何形式参数,那么按照第3中的写法,是一种不错的选择。

【AD封装】贴片铝电解系列封装(带3D)

【AD封装】USB Type-A座子系列(带3D)

【AD封装】TF(micro SD)卡座封装大全(带3D)

【AD封装】2.4G PCB天线(量产用)

【AD封装】RJ45座子(带3D)

【AD封装】DC3-2.54板端座子(带3D)

【AD封装】USB3.0板端座子(带3D)

【AD封装】LED发光二极管(带3D)

【AD封装】贴片插件电阻排阻(带3D)

【AD封装】插件压敏电阻(带3D)

【AD封装】继电器(带3D)

【AD封装】按键开关,拨码开关,拨动开关(带3D)

【AD封装】PH2.0座子插件贴片(带3D)

【AD封装】915MHz天线,GPS天线,GSM天线,433MHz天线,13.56Hz天线,LTE天线

【AD封装】FPC座子0.5mm间距1.0mm间距1.25间距(带3D)

【AD封装】贴片及插件二极管-整流桥(带3D)

【AD封装】插件电解电容,贴片电容,钽电容,独石电容(带3D)

【AD封装】VH3.96mm插件座子(带3D)

【AD封装】XH2.54mm座子插件贴片(带3D)

【AD封装】贴片插件晶振(带3D)

【AD封装】micro USB座子,Type C座子,USB-A公头(带3D)

【AD封装】三极管,MOS管,部分LDO(TO,SOT系列)(带3D)

【AD封装】贴片电感(带3D)

【AD封装】插件电感,变压器(带3D)

【AD封装】芯片IC封装-QFP,TQFP,LQFP(带3D)

【AD封装】DC电源接口、音频接口(带3D)

【不用开发板学习STM32】一般流水灯实验(文末获取代码及工程文件

【收藏】32个EMC标准电路!!

【收藏】你应该知道的拓扑结构-开关电源,都在这里!!

【收藏】开关电源你必须知道的专业名字(中英对照)!!

【收藏】优选4层板到12层板叠层经典设计方!!

【过瘾】电机原理动态图,停不下来!!

【过瘾】各种烙铁头正确使用姿势,你get到了吗?

【较真】细说LDO旁路电容如何选!!

【较真】0欧姆电阻的妙用!!

【必看】10分钟学会看MOSFET手册!!

【AD作品】STM32F103ZET6 mini板子

【电子元器件知识普及】-电 阻

【电子元器件知识普及】-电容

【电子元器件知识普及】-二 极 管

【电子元器件知识普及】-电 感

【电子元器件知识普及】-变压器知识大盘点

【电子元器件知识普及】-必须知道的天线知识及天线图谱

【电子元器件知识普及】-美国线规AWG与公制对照表,拿走不谢~

!!

智芯Player 电子创客DIY达人聚集地,发布有趣的DIY作品,实用的教程,板卡试用心得,发布实用的PC手机软件,最新行业动态,兼职外快信息,你想要的这里都有,打造一个可以玩,可以吐槽的工程师小圈子.
评论 (0)
  •   无人机电磁环境效应仿真系统:深度剖析   一、系统概述   无人机电磁环境效应仿真系统,专为无人机在复杂电磁环境下的性能评估及抗干扰能力训练打造。借助高精度仿真技术,它模拟无人机在各类电磁干扰场景中的运行状态,为研发、测试与训练工作提供有力支撑。   应用案例   目前,已有多个无人机电磁环境效应仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁环境效应仿真系统。这些成功案例为无人机电磁环境效应仿真系统的推广和应用提供了有力支持。   二、系统功能  
    华盛恒辉l58ll334744 2025-04-17 15:51 61浏览
  •   无人机电磁兼容模拟训练系统软件:全方位剖析   一、系统概述   北京华盛恒辉无人机电磁兼容模拟训练系统软件,专为满足无人机于复杂电磁环境下的运行需求而打造,是一款专业训练工具。其核心功能是模拟无人机在电磁干扰(EMI)与电磁敏感度(EMS)环境里的运行状况,助力用户评估无人机电磁兼容性能,增强其在复杂电磁场景中的适应水平。   应用案例   目前,已有多个无人机电磁兼容模拟训练系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁兼容模拟训练系统。这些成功案例为
    华盛恒辉l58ll334744 2025-04-17 14:52 33浏览
  •   无人机蜂群电磁作战仿真系统全解析   一、系统概述   无人机蜂群电磁作战仿真系统是专业的仿真平台,用于模拟无人机蜂群在复杂电磁环境中的作战行为与性能。它构建虚拟电磁环境,模拟无人机蜂群执行任务时可能遇到的电磁干扰与攻击,评估作战效能和抗干扰能力,为其设计、优化及实战应用提供科学依据。   应用案例   目前,已有多个无人机蜂群电磁作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机蜂群电磁作战仿真系统。这些成功案例为无人机蜂群电磁作战仿真系统的推广和应用提
    华盛恒辉l58ll334744 2025-04-17 16:29 69浏览
  •   北京华盛恒辉无人机电磁兼容模拟训练系统软件是专门用于模拟与分析无人机在复杂电磁环境中电磁兼容性(EMC)表现的软件工具。借助仿真技术,它能帮助用户评估无人机在电磁干扰下的性能,优化电磁兼容设计,保障无人机在复杂电磁环境中稳定运行。   应用案例   目前,已有多个无人机电磁兼容模拟训练系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁兼容模拟训练系统。这些成功案例为无人机电磁兼容模拟训练系统的推广和应用提供了有力支持。   系统功能   电磁环境建模:支持三维
    华盛恒辉l58ll334744 2025-04-17 15:10 46浏览
  • 现阶段,Zigbee、Z-Wave、Thread、Wi-Fi与蓝牙等多种通信协议在智能家居行业中已得到广泛应用,但协议间互不兼容的通信问题仍在凸显。由于各协议自成体系、彼此割据,智能家居市场被迫催生出大量桥接器、集线器及兼容性软件以在不同生态的设备间构建通信桥梁,而这种现象不仅增加了智能家居厂商的研发成本与时间投入,还严重削减了终端用户的使用体验。为应对智能家居的生态割裂现象,家居厂商需为不同通信协议重复开发适配方案,而消费者则需面对设备入网流程繁琐、跨品牌功能阉割及兼容隐患等现实困境。在此背景
    华普微HOPERF 2025-04-17 17:53 49浏览
  • 近日,全球6G技术与产业生态大会(简称“全球6G技术大会”)在南京召开。紫光展锐应邀出席“空天地一体化与数字低空”平行论坛,并从6G通信、感知、定位等多方面分享了紫光展锐在6G前沿科技领域的创新理念及在空天地一体化技术方面的研发探索情况。全球6G技术大会是6G领域覆盖广泛、内容全面的国际会议。今年大会以“共筑创新 同享未来”为主题,聚焦6G愿景与关键技术、安全可信、绿色可持续发展等前沿主题,汇聚国内外24家企业、百余名国际知名高校与科研代表共同商讨如何推动全行业6G标准共识形成。6G迈入关键期,
    紫光展锐 2025-04-17 18:55 123浏览
  • 一、行业背景与需求智能门锁作为智能家居的核心入口,正从单一安防工具向多场景交互终端演进。随着消费者对便捷性、安全性需求的提升,行业竞争已从基础功能转向成本优化与智能化整合。传统门锁后板方案依赖多颗独立芯片(如MCU、电机驱动、通信模块、语音模块等),导致硬件复杂、功耗高、开发周期长,且成本压力显著。如何通过高集成度方案降低成本、提升功能扩展性,成为厂商破局关键。WTVXXX-32N语音芯片通过“单芯片多任务”设计,将语音播报、电机驱动、通信协议解析、传感器检测等功能整合于一体,为智能门锁后板提供
    广州唯创电子 2025-04-18 09:04 106浏览
  • 1. 在Ubuntu官网下载Ubuntu server  20.04版本https://releases.ubuntu.com/20.04.6/2. 在vmware下安装Ubuntu3. 改Ubuntu静态IP$ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by 'subiquity'network:  renderer: networkd&nbs
    二月半 2025-04-17 16:27 64浏览
  •   无人机蜂群电磁作战仿真系统软件,是专门用于模拟、验证无人机蜂群在电磁作战环境中协同、干扰、通信以及对抗等能力的工具。下面从功能需求、技术架构、典型功能模块、发展趋势及应用场景等方面展开介绍:   应用案例   目前,已有多个无人机蜂群电磁作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机蜂群电磁作战仿真系统。这些成功案例为无人机蜂群电磁作战仿真系统的推广和应用提供了有力支持。   功能需求   电磁环境建模:模拟构建复杂多样的电磁环境,涵盖各类电磁干扰源与
    华盛恒辉l58ll334744 2025-04-17 16:49 62浏览
  • 一、行业背景与需求随着智能化技术的快速发展和用户对便捷性需求的提升,电动车行业正经历从传统机械控制向智能交互的转型。传统电动车依赖物理钥匙、遥控器和独立防盗装置,存在操作繁琐、功能单一、交互性差等问题。用户期待通过手机等智能终端实现远程控制、实时数据监控及个性化交互体验。为此,将蓝牙语音芯片集成至电动车中控系统,成为推动智能化升级的关键技术路径。二、方案概述本方案通过在电动车中控系统中集成WT2605C蓝牙语音芯片,构建一套低成本、高兼容性的智能交互平台,实现以下核心功能:手机互联控制:支持蓝牙
    广州唯创电子 2025-04-18 08:33 96浏览
我要评论
0
5
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦