c语言的main简单函数 c语言main函数的用法( 二 )


main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码 。由于DLL模块不是独立的程序,因此不需要main函数 。再比如,用于专业环境的程序-----如机器人中的控制芯片--可能不需要main函数 。
参考资料:百度百科:main函数
初学编程,C语言中的main函数考虑到main函数的特殊性,lz不明白这个问题可以理解 。
main()是省略c语言的main简单函数了返回值类型,C语言会默认认为成main的类型为int , 在main()的函数体内要返回一个值,如return 0;
而void main()的返回值是void类型 , 也就是说没有返回值 。这样在main()的函数体内你就不用写return 0;或者return 1;之类的返回语句 。
在一个程序中,可以说你看不出两者的差别,因为main()是C语言的入口点,入口点如果返回c语言的main简单函数了程序也就结束了,因此C语言的这个特性似乎没用 。可没用的话,C语言的设计者为什么要这么做呢?c语言的main简单函数!肯定有用 。
没错,前面我说的是在一个程序中,它似乎没用 。可如果一个程序prog2调用另一个程序prog1的话(这里指的是prog2直接调用prog1编译好的可执行文件),那么这个特性就有用了 。因为prog2要知道prog1运行之后的状态 。比如你用C写了一个删除文件的程序(暂且命名为delf) , 然后用另一个程序去调用delf,那么调用结果怎么样?。空飧鑫募欠裆镜袅耍空馐莍nt main()就会派上用场了 。C语言中默认的main如果返回为0,那么这个程序调用就成功了 , 其他值,则为不同的错误代码 。在你的delf程序中 , 如果那个文件删除成功,那么就在int main()中返回0,其他调用delf的程序就知道,噢,这个操作成功了 。
在unix/linux系统中的很多命令都是通过这种方式获得运行结果的 。
关于谭浩强的书 , 我想不用多说,发行量说明了一切 。毕竟第二版在编写的时候还比较早,而第三版根据很多现在的需要进行了改写,内容当然会好些 。鉴于lz是初学C,其实大可不必在这个问题上浪费太多时间,当你有了更多的项目经验,对这个问题会有更深刻的理解 。
上面我已经给出了main()、int main()和void main()的区别,但建议lz忽略这个差别,认为成二者一样,先把C的其他部分学好 。至于只写成main(),我并不推荐,就算编译器通过了,这种编程的风格也太不严谨,不利于好的习惯的养成 。
c语言main函数// C语言由bell实验室创立,但后续分支太多
// 所以ISO(国际标准化组织)制定了统一标准
// 目前通过的标准主要有3个 C89 C99 C11
ASNSI X3.159-1989对应C89由ASNSI制定
ISO/IEC 9899:1990还是C89,只是ISO从ASNSI那里“抄袭”过来,又称C90
ISO/IEC 9899/AMD1:1995对于C89的补充,又称C95
ISO/IEC 9899:1999C99标准
ISO/IEC 9899:2011C11标准
//关于main函数的标准在C89和C99又有差异
类型一,不指明返回类型
main (){return 0;}
//这在C89中是合法的,因为不指明返回类型其实是隐含的告诉编译器 , 这个函数返回类型是int
//这在C99中是非法的,因为C99要求显式声明所有函数
类型二,不书写return ...;在main函数中
int main(void){}
// C89, 函数返回值未定义
// C99, 当main函数返回类型为int, 且没有写return语句时,默认返回0
// C99, 其他情况下,返回值未定义
类型三 , 定以返回值为非int
void main(void) {return;}
// C89, 非法(不bb, 就是非法)
// C99, 允许main函数返回类型由实现定义,支持void以及其他类型返回值

推荐阅读