永发信息网

main函数的类型

答案:5  悬赏:30  手机版
解决时间 2021-04-16 14:58
main函数的类型
最佳答案
都可以,main()这种也行,但只有

int main(void)
{return 0;}

int main(int argc,char argv*[])
{return 0;}

int main(int argc,char *argv[] char *envs[])
{return 0;}

这三种形式是推荐的,主函数应该有返回值,系统要根据返回值判断程序的运行状态。
全部回答
int main(void);
int main(int argc,char argv*[]);
ISO C99标准定义了以上两种。
由于ANSI C89/ISO C90中返回值可以被省略而默认为int,所以main(void);也可以作为原型。(新标准取消了这个特性。)
以上只是标准规定的形式入口函数原型。其余的入口函数(甚至可以不叫main)由实现定义,取决于平台(编译器)。注意非标准的入口函数会导致代码可移植性差。例如对于控制台程序,Microsoft C&C++ Compiler支持void main(),但这样的代码在GCC上无法通过编译。
C语言中()参数列表表示可以接受任意类型和个数的参数(对应C++中的(...)),而(void)不接受参数(对应C++中的(...)),两者有所区别。不过一般C的入口函数实现中前者兼容后者。于是int main();作为C++标准入口函数形式之一(另一种是int main(int argc,char argv*[]);),事实上和C通用。
另外一种非标准通常形式为int main(int argc,char *argv[] char *envp[]),envp表示传入的环境变量。
一般来说,除非限制了特定的平台(在一些特定的场景如Linux内核程序中,应该使用void main();),对于控制台程序最好只使用标准定义的入口函数形式或者int main();。即使用VC++,void main();也一般不是被推荐的。main的返回值传递给调用者(操作系统/父进程),通常0表示正常退出,非0表示非正常退出。如果使用void main();,控制台程序的返回值是不确定的,和平台相关。
====
[原创回答团]

参考资料:原创

你好!
有些教材上是说可以main(),但具体我没试过;
关于main的定义:
在一般那情况下,个人建议使用int main()或int main(void);
谭浩强的教材中曾显示void main(),但在VC 6.0等等可以,只是和已经不符合C99的标准了;
int main(int argc,char argv*[])是Linux系统下C编程常见的,因为后面框框里面的是用来传递参数用的;
至于别的,我不常见到...
int型,void型。主要这两种
C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程
序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用
的是有参函数,则参数在调用时传递。
int main(void)//整数类型主函数(无类型)
{
...
y1=f1(x1,x2);//赋值过程
...
}

f1(int a,int b)//f1(整数类型a,整数类型b)
{
Y2=f2(x3,x4);//赋值过程
}
f2(int m,int n)//f2(整数类型m,整数类型n)
{
}

int main(void)//整数类型主函数(无类型)
{
...
y1=f1(x1,x2);//赋值过程
...
}

f1(int a,int b)//f1(整数类型a,整数类型b)
{
Y2=f2(x3,x4);//赋值过程
}
f2(int m,int n)//f2(整数类型m,整数类型n)
{
}
对main()函数始终作为主调函数处理,也就是说,允许main()调用
其它函数并传递参数。事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有
参的形式来说,就需要向其传递参数。
main()函数的带参的形式:
int main(int argc,char **argv)//整数类型主函数(整数类型统计参数个数,字符类型*数组指针至字符[])
{
//
}

int main(int argc,char **argv)//整数类型主函数(整数类型统计参数个数,字符类型*数组指针至字符[])
{
}
从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件(对windows操作系统而言),这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由
系统在启动运行时传递参数了。
在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令参数1参数2....参数nt;
此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
急求个CF战队名称
花边鱼在什么地方啊,我要过去处理事情
北京外来人都住地下室对么?大概一人的房间多
笔记本电脑自动重启
衣服怎么穿好看
通过朋友在日本代购了一台投影仪,价值人民币
是明年三月份取消下岗职工补交养老金吗
十七岁可以当兵吗?
地猴是什么?
我为什么总要迁就她的一切,而她却不原谅我任
鼓楼照相彩扩这个地址在什么地方,我要处理点
为什么问问上问过的问题现在删不了啦?以前可
孛怎么读同音字,飙请问一下这个字念什么?
自由幻想现在怎么还领不成荣誉点呀
请问这是什么意思 ·谁能帮我翻译下
推荐资讯
在云南省大理州宾川县租房一个月要多少钱??
很想念一个人用英语怎么说?
半坡特卖是什么意思,什么是特卖会?
杰伦最近有什么好听的歌出╮(╯_╰)╭
知乎为什么用Python,而不用PHP?
数码相机感光度怎么调,三星数码相机开机键是
QB充值的会员转成财付通充值
四峨村地址在哪,我要去那里办事
牙齿上部分肉肉怎么变白色肉?
The new chairman was quite familiar with t
三龙口在哪里啊,我有事要去这个地方
爱鸭黑鸭王(铜山金城店)这个地址在什么地方,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?