04-C++基础-第二章-main()函数

2.1.1 main()函数

   去掉修饰后,程序2.1.1中的示例程序的基本结构如下:

int main()

{
     statements
    return 0;

}

    这几行表明有一个名为main()的函数,并描述了该函数的行为。这几行代码构成了函数定义(function definition)。该定义有两部分组成:第一行int main()叫函数头(function heading),花括号({和})中包括的部分叫做函数体。函数体是由函数应该做什么的计算机指令。在C++中,每条完整的指令都称为语句。所有的语句都以分号结束,因此在输入示例代码时,请不要省略分号。

     main()中最后一条语句叫做返回语句(return statement),它结束该函数。本章将讲述有关返回语句的更多知识。

补充内容:语句和分号

    语句是要执行的操作。为理解源代码,编译器需要知道一条语句合适结束,另一条语句何时开始。有些语言使用语句分隔符。例如i,FORTRAN通过行尾将语句分隔开来,Pascal使用分号分隔语句。在Pascal中,有些情况下可以省略分号,例如END前的语句后面,这种情况下,实际上并不没有将两条语句分开。不过C++于C一样,也使用终止符(terminator),而不是分隔符。终止符是一个分号,它是语句的结束标志,是语句的组成部分,而不是语句之间的标记。结论是:在C++中,不能省略分号。

1、作为接口的函数头

    就目前而言,需要记住的主要一点是,C++句法要求main()函数的定义以及函数头ing main()开始。本章后面的“函数”一节将详细讨论函数头句法,然而,为满足大家的好奇心,下面先预览一下。

    通常,C++函数可被其他函数激活或调用,函数头描述了函数于调用它的函数之间的接口。位于函数名前面的部分叫做函数返回类型,它描述的是用函数返回给调用它的函数的信息。函数名后括号中的部分叫做形参列表或参数列表;它描述的是从调用函数传递给被调用函数的信息。这种通用格式用于main()时让人感到游戏迷惑,因为通常并不从程序的其他部分调用main()。

    然而,通常,main()被启动代码调用,而启动代码是由编译器添加到程序中的,是程序和操作系统之间的桥梁。事实上,该函数头描述的是main()和操作系统之间的接口。

    来看下main()的接口描述,该接口从int 开始。C++函数可以给调用函数返回一个值,这个值叫做返回值。在这里,从关键字int 可知,main()返回一个整数值。接下来,是空括号。通常,C++函数在调用另一个函数时,可以将信息传递给该函数。括号中的函数头部分描述的就是这种信息,在这里空括号意味值main()函数不接受恩和信息,或者main()不接受任何参数。(main()不接受任何参数并不意味着main()是不讲道理的、发号施令的函数。相反,术语参数只是计算机人员用来表示一从一个函数传递给另一个函数的信息)。

    简言而之,下面的函数头表面main()函数可以调用它的函数返回一个整数值,而不从调用他的函数那里获得任何信息:

    int main();

     很多现有的程序 都使用经典C函数头:

      main()
    在C语言中,省略返回类型相当于说函数的类型为int 。然而,C++逐步淘汰了这种用法。

    也可以是下面的变体:

    int  main(void)
    在括号中使用关键字void 明确地指出,函数不接受任何参数。在C++(不是C)中,让括号空着于在括号中使用void等效(在C中,让括号空着意味着对是否接受参数保持沉默)。
    有些程序员使用下面的函数头,并省略返会语句:

     void main()

    这在逻辑上是一致的,因为void 返回类型意味着函数不返回任何值。该变体适用于很多操作系统,但由于他不是当前标准强制的一个选项,因此在有些程系统上不能工作。因此,读者应避免使用这种格式,而应使用C++标准格式,这不需要作太多的工作就能完成。

    最后,ANSI/ISO C++标准对那些抱怨必须在main()函数最后包含一条返会语句过于繁琐的做出了让步。如果编译器到达mian()函数末尾时没有遇到返回语句,则认为main()函数以如下语句结尾:

    return 0;

     这条隐含的返回语句只适用于main()函数,而不适用于其他函数。

2、为什么main()不能使用其他名称

    之所以将myfirst,cpp中的函数命名为main(),原因是必须这样做。通常,C++程序必须包含一个名为main()的函数。记住,大小写和拼写都要正确。由于myfirst.cpp程序只有一个函数,因此该函数必须负担器main()的责任。在运行C++程序时,通常从main()函数开始执行。因此,如果没有main(),程序将不完整,编译器将指出未定义main()函数。
    存在一些例外情况。例如在Windows编程中,可以编写一个动态链接库(DLL)模块,这是其他WIndow程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main()。用于专用环境的程序——如机器人中的控制芯片——可能不需要main()。有些编程环境提供一个框架程序,该程序调用一些非标准函数,如_tmain()。在这种情况下,有一个隐藏的main(),它调用_tmain()。但常规的独立程序都需要main()。

你可能感兴趣的:(C++语言学习,C++基础教程,C++)