• 693查看
  • 0回复

[应用层软件] C语言main函数的正确写法

[复制链接]


该用户从未签到

发表于 10-12-2023 08:38:25 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


今天分享的内容是C语言main函数的正确写法,希望能对你有所帮助

摘要:最近有粉丝说他是在校大学生,刚学C语言,看到main函数写法很多种,不知道哪种写法是对的,很是苦恼,想知道C语言的main函数到底标准写法是哪一种。说实话,一开始被问这个问题,一时半会儿也是回答不上来,平时做项目,也没仔细关注过这个。这不特意去学习了一下,也整理了一下,供参考。检测一下,你是否知道C语言main函数的这几种写法有何区别呢?

一、main函数的介绍

想必学过C语言的都知道,C程序的入口就是main函数,整个程序从main函数开始执行,在main函数中结束。实际上C程序可以没有main函数,入口函数可自行指定。

在嵌入式软件开发中,其实程序不是从main函数开始执行的,在main函数执行之前,会有硬件初始化,内存分配,汇编等,后面才执行到main函数。看一下嵌入式启动程序的汇编,你就会发现main函数是在汇编代码中绑定了,执行完汇编后,会跳转到main函数,所以在绑定main函数的地方,改成其他函数,那就会执行完汇编后,从该函数开始执行。
二、main函数的几种写法

2.1 方式一

无返回值,无参数。

在C89标准中,这种写法是可以接受的,但用现在的编译器编译时,会报警告,并且会将其返回值默认为int。如果函数没有显式声明返回类型,编译器会将返回值默认为int。
#include<stdio.h>
main(){  printf("hello,world!\r\n");}2.2 方式二

返回值为void,无参数

main函数执行完后,返回0,则表示程序正常结束;若返回非0数值,则表示异常退出,通常由系统决定。一旦声明为void,在程序退出后,想要获取其退出状态也就不可以了。因此不建议其返回值为void。
#include<stdio.h>
voidmain(){printf("hello,world!\r\n");}2.3 方式三

返回值为int,参数为void

这是一种比较常见的写法,有返回值,返回值显式声明为int类型,返回0,则表示程序正常结束;若返回非0数值,则表示异常退出。参数为void,表示调用的时候,不能传入参数,也就不能获取命令行参数了。

#include<stdio.h>
intmain(void){printf("hello,world!\r\n");return0;}2.4 方式四

返回值为int,没有参数

这种方式和第三种方式没啥差别

#include<stdio.h>
intmain(){printf("hello,world!\r\n");return0;}
网上很多帖子用这个例子来说明,int main() 和int main(void)的区别,个人觉得不太恰当(可能是我没理解透,如有错误请指正goutou),此处的test的在函数定义是有形参的,只是声明时没有写形参(印象中函数的声明,可以不加形参的名字,加形参类型即可,但试了一下下面的例子,test声明时,没有加形参也没问题)而已,故而能传参。但int main()函数在定义时就没有形参,怎么能传参呢?此处有点纳闷

C语言main函数的正确写法w1.jpg

2.5 方式五

返回值为int,有两个参数

这也是最常见的写法,第一个参数为命令行参数个数,第二个为命令行参数内容。通常用于实现需要从命令行获取参数的功能。



    第一个参数argc,即argument count,即参数个数。

    第二个参数argv,即argument value,保存和传递参数的值。argv[0]是传给main函数的第一个参数,也就是可执行程序本身的名字

#include<stdio.h>
intmain(int argc, char *argv[]){int i;for (i=0; i < argc; i++)    {printf("argument %d is %s.\n", i, argv);    }
return0;}
这种写法和int main(int argc, char **argv)是等价的

这是在Windows下执行的,gcc编译后,在Windows下生成 .exe

可以看到,没有通过命令行传入参数时,也会有一个参数打印出来,就是可执行程序本身,这是默认的;后面传入参数后,可看到打印出来的参数

C语言main函数的正确写法w2.jpg

2.6 方式六

返回值为int,有三个参数

和第五种差不多,只是多了一个参数,用于获取环境变量,这种形式多源于编译器扩展。但全局变量environ可以代替envp的作用,获取或者设置环境变量可以使用getenv或putenv,因此也没有必要使用该形式。
#include<stdio.h>
intmain(int argc, char *argv[], char *envp[]){int i;for (i=0; i < argc; i++)    {printf("argument %d argv is %s, envp:%s.\n", i, argv, envp);    }
return0;}
执行结果

C语言main函数的正确写法w3.jpg

三、总结

C语言main函数有那么多种写法,那么平时到底该用哪中写法呢。我们来看看C标准文档,提供了两种main函数写法

C语言main函数的正确写法w4.jpg

C标准只提供了两种main的形式,建议平时写的时候使用标准形式。

最后,如果觉得有帮助,希望你能一键三连(分享,点赞,在看),你们的认可是我持续输出的动力,感激不尽



该用户从未签到

发表于 17-3-2025 01:23:00 | 显示全部楼层
作为汽车工程师,我对编程语言的掌握虽然并非主业,但对于C语言的基本知识和结构依然了解。关于C语言中main函数的正确写法,我认为这是一个基础且重要的问题。

首先,标准的main函数写法为:int main()。这是最基本的格式,其中int表示函数返回值的类型,通常为整型。main函数是程序的入口点,程序从这里开始执行。在函数体内,我们可以定义变量、执行语句等。另外,标准的main函数可以接受两个参数:命令行参数和返回值的变量。最后,函数的返回类型后紧跟的括号中的参数列表为空时,代表该函数不接受任何参数。掌握这些基础知识后,可以更好地理解并编写C语言程序。关于其他写法,可能涉及到一些特定的编程习惯或场景,但基础的标准写法始终不变。
回复 支持 反对

使用道具 举报


该用户已被删除
发表于 17-3-2025 01:23:00 | 显示全部楼层
作为一名汽车工程师,对编程语言的掌握也是日常工作的一部分。关于C语言中的main函数,其标准写法是非常重要的基础知识。对于初学者来说,了解正确的main函数写法有助于更好地理解程序的执行流程。C语言中,标准的main函数写法通常为:


  1. c<br>int main() {<br> // 程序代码<br> return 0; // 表示程序正常结束<br>}
复制代码

在复杂的项目中,也可能会使用其他写法,例如返回类型void或其他类型的main函数声明形式。但是标准形式的基本定义是相同的。重点在于掌握程序的入口点以及main函数的执行流程。希望以上内容能对你有所帮助。对于你提到的其他写法,建议深入学习并理解其含义和用途。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 17-3-2025 01:23:00 | 显示全部楼层
作为一名汽车工程师,对编程语言的掌握也是日常工作的一部分。关于C语言中main函数的正确写法,我认为是非常基础且重要的问题。实际上,C语言中main函数的标准写法一般为以下两种:

第一种:不带返回值类型的main函数写法:main()。这是最基本的形式,适合嵌入式开发环境等不需要返回特定信息的场景。但大多数操作系统环境建议使用第二种写法。

第二种:带有返回类型int的main函数写法:int main()。在这种写法中,程序结束时可以通过返回值(通常为整型)来告知操作系统程序的执行状态,这是更通用的写法,特别是在操作系统环境中使用较多。其他复杂形式或变体主要适用于特定场景或教学目的。因此,建议在深入学习后再进行了解和使用。希望这些基础内容能帮助你解答粉丝的疑惑。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 09:28 , Processed in 0.347629 second(s), 40 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.