c语言声明函数位置 c语言声明函数和定义函数( 六 )


见过在main()的函数体的“}”之前前写一句getch();,这个是怎么回事?这个是时代的产物 。在PC从DOS时代转变为Windows时代的过程中,DOS时代开发的IDE(主要是TC)无法在运行程序后显示输出结果 , 为了在运行后从容仔细地观察一下运行结果再返回IED界面,加上了这么一句,人为地延长程序运行时间(因为getch()会等待用户输入一个字符) 。但这与main()本身的结构无关 。这条语句不具备普遍意义 , 只是将就过时的IDE的一种权宜之计而已 。所谓不具备普遍意义是指 , 第一 , 真正的程序往往不需要这条语句,就是说这条语句与程序功能无关;第二,getch()这个函数并不是标准函数,只有个别的编译器才支持它,在其他编译器上写这条语句 , 很可能行不通 。
为什么不用getchar()这个标准库函数呢?getchar()的功能和getch()有点区别,前者会在标准输出设备上显示用户键入的字符,这显得很不利索,而后者则不会显示用户所键入的字符,更接近“Press Any Key to continue……”的效果 。
有的代码在main()函数结束前写system("PAUSE");,是否也是这个意思?是的 。这也是一种人工制造的“请按任意键继续. . .”,与程序功能结构无关,只是为了方便地观察输出结果 。但是这种写法比调用getch()要好,因为system()函数是标准库函数,各个编译器都提供支持 。
有一种说法,“在最新的C99标准中,只有以下两种定义方式是正确的:”
?
12345
int main( void ){ /* */ return 0;}

?
12345
int main( int argc, char *argv[] ){ /* */return 0;}
这种说法对吗?
这种说法显然不对 。但可以确认的是这两种定义方式一定正确 。不但在C99来说是正确的,以C89来说也是正确的 。
还有一种写法:
?
1234
int main( void ){ return EXIT_SUCCESS;}
那个EXIT_SUCCESS是怎么回事?
return EXIT_SUCCESS;是与return 0;等价的一种文雅的写法 。EXIT_SUCCESS是在stdlib.h中定义了的符号常量 , 返回这个值表示程序任务完成后程序退出 。在stdlib.h定义的另一个符号常量EXIT_FAILURE,通常用于程序无法完成任务而退出 。
实在太眼花缭乱了 , 需要记住这么多吗?显然没必要 。很多东西都是历史原因遗留下的垃圾 。
如果学习C语言,应该记住或使用哪种呢?显然是:
?
12345
int main( void ){ /* */return 0;}

?
12345
int main( int argc, char *argv[] ){ /* */return 0;}
第一,他们普遍适用,不存在可移植性的问题;
第二,就目前看 , 他们不存在任何过时或即将过时的成分 。当然 , 如果喜欢文雅,不写return 0;而写EXIT_SUCCESS也可以 。顺便说一句,有的学习者记不住带参数main()函数两个形参的名字 。其实这两个形参的名字也可以自己取,不一定用那两个名字,只要记住类型就可以了 。第二个参数的类型也可以是char **,这和原来的是等价的 。
函数声明与函数定义分别在程序中的什么位置?为什么?函数c语言声明函数位置,是编程语言中可以独立运行c语言声明函数位置的一个代码块 。
在C语言中 , 程序从main()函数开始运行,其c语言声明函数位置他函数要被main函数调用才可以运行 。
在从shell解释器运行编译好c语言声明函数位置的可执行程序时,main函数会被shell启动,开始运行 。
C语言的函数在使用时要经过3个步骤:声明、定义、调用 。
函数声明,就是给出函数的原型,让程序员知道怎么给函数传参数,怎么接收返回值,让编译器知道怎么进行代码的类型检查 。main函数的声明是这样的:

推荐阅读