程序命令按照它们在源代码中出现的顺序一行一行地顺序执行,直到碰到新的函数调用。 然后程序分支去执行函数调用。当函数完成时,程序控制立即返回到调用函数的下一行代 码。 这一过程可比喻为查字典。如果你在看书对有一个字不认识,于是,就停止阅读,去查 字典。字典查完后,又接着看书。 当程序需要服务时,它可以调用函数实现所需要的服务然后当函数返回时再从它原来 的地方继续执行。 C++程序是函数驱动的 例如,下面的程序实现一个简单的用户函数max()的调用,来求两个数中的较大值,并 调用了标准库函数sgt(来求两个数中较大值的平方根 chi.3. cpp 美善黄黄菁 include <iostream.h> include mathn> double max(double x, double y); void main() double a, b,ci cout < input two numbers: \ ni cout << "the squat of maximum="<< sart(c); double max(double x, double y) return x: else 运行结果为: input two numbers 2456 the squat of maximum= 21.3542 主函数main)的开始是3个 double型(双精度类型)变量的定义语句。C++为此给其 分配3个 double型变量的内存空间。在输入了两个变量a,b的值(运行中输入的123赋给 a,456赋给b)后,调用了用户自定义的函数max()。 C++中,一个函數必须在函数声明后才能使用(被调用)所以在主函数min()的前面, 有max()函数的声明。函数声明告诉编译器该函数是存在的。后面编译器在看到该函数
被调用时就不会觉得大惊小怪了。同时编译器还对函数调用进行正确性检查。C+函数 声明总是由函数原型构成的。函数原型在52中介绍。 max()函数调用使程序执行mx()函数中的语句,并将该函数的返回值赋给变量co max()函数是求两个doue型数中的大者然后将结果返回给调用它的函数。所以在函 数的头上,写有dube的返回类型。如果一个函数不需要返回值,则可以像主函数mnin(那 样,在头上声明为 函数定义由函数头和函数体构成。函数头又由返回类型、函数名和函数参数构成。上 例中的“ double max( double x, double y)”就是函数头。函数体是由紧随函数头之后的花括号 构成。 函数头中的函数参数允许向函数传递值。mx()函数中xy就是函数的参数。参数声 明时要指出其类型。函数mx()中的参数声明为“ double x, double y,它指出x和y的类型 都是双精度型。 函数定义中的参数称为形式参数简称形参。函数mx()中的x和y就是形参。调用函 数时实际传递的值称为实际参数简称实参。主函数min(在对m()函数的调用时,用的 a和b就是实参。函数在调用时将实参值复制给形参使得形参变量也具有实参的值。实 参可以是表达式,它代表赋值的一方。形参只能是变量,因为它要接受赋值。 函数头有返回类型说明时,函数体中要用rtm返回值。同时,rtum语句也使函数退 出。max()函数中执行“rmx”或“rtmy”即返回一个dbe值到主函数min()中。 如果函数体中没有retm语句函数将在结尾处自动无值返回。如果有返回值,则该返 回值应该具有函数头中声明的返回类型。 函数有两种:标准库函数和用户定义函数。上例中的mx()函数是用户定义函数, sqpt()函数是标准库函数。标准库函数简称库函数它是C++提供的,可以为任何程序所使 用。库函数无须用户声明和定义但要将含有其函数声明的头文件包含在程序中。sqt()函 数的声明在mhh头文件中,所以在上例程序的开头,写有# include< math. h>。 一个C+程序由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也 可以互相调用。同一个函数可以被一个或多个函数调用任意多次。见图12。 fund fun fun fun 图1-2程序中的函数调用 函数定义包含函数声明所以可以将函数定义放在函数应该声明的位置,而将其他函数 的定义放在主函数mn(之前。一个程序中主函数mn()的位置是没有特殊要求的由 此,程序ch13cp可以写成下面的程序: 簧#,美普普箫普“美普兴新誓餐黃 ch1-4. cpp
f include <iostream.h> t include mmath.h> Rouble max( double x, double y)/wx(函数定义同时也是函数声明 f x>y) return x: else return; void main(》 double a, b, ci cout << "input two numbers: n"; cin >>a >>b: C= max(a, b) cout <<the squart of maximum="<< sqrt(c); 该程序的功能和ch1-3.qpp是一样的。但通常我们习惯将主函数muin()放在程序的前 面,以便阅读程序时很快找到。 C++中,每个函数对于程序的其他函数总是可见的。也就是说,任何函数都可以被 包括它自己的所有函数所调用。用户不能定义函数的唯一之处是在另一个函数的定义之 中。函数定义可以以任何顺序出现在程序中。由于min()启动和终止程序运行,所以 main(函教通常第一个出现在程序中,而其他函教定义紧随其后。 小结 学习C++,不一定非要学过C。但学过C能促进C++的学习。 C+程序经过编辑、编译和连接产生可运行的ee文件。 C++程序由函数构成,它总是从主函数main()开始运行。但并不是说,main()函数非 得要写在程序的最前面。 函数有两种:标准库函数和用户定义函数。min()函数是特殊的用户定义函数。每个 程序只能有一个min()函数,并且必须要有一个min()函数 函数调用前必须要有函数声明 函数定义包含函数声明。函数定义由函数头和函数体组成。关于函数在第4章中将 详细介绍。 一个语句可以写在多个程序行上,一个程序行可以写多个语句。语句以分号结束。 C++通过标准输入输出流进行输人输出。 程序ch13cpp是C++的简单程序结构之样板。认识C++程序从该程序开始 程序设计的目标在正确的前提下,其重要性排列次序依次为:可读可维护可移植和高 效
第2章基本数据类型与输人输出 程序中最基本的元素是数据类型。确定了数据类型,才能确定变量的空间大小和其上 的操作。C++的数据类型检查与控制机制,奠定了C++今天的地位。C++还提供了LO流 机制完成对输入输出的操作管理。在过程化程序设计中,pi和aadf是对流的一个适当 补充。学习本章后,要求搞清数据类型与变量、常量的关系,掌握各种常量的性质和定义,学 会LO流的使用,了解pr和 scanf输人输出的作用。 21字符集与保留字 每种语言都使用一组字符来构造有意义的语句。C++程序是用下列字符所组成的字 符集写成的: 26个小写字母 abcdefghijklmnopqrstuvwxyz 26个大写字母 ABCDEMFGHIJKLMNOPQRSTUVAXY Z 10个数字 0123456789 其他符号 +共/=,:;?\“-1!暑&)4) (空格 C++中保留字也称关键字。它是预先定义好的标识符,这些标识符对C++编译程序 有着特殊的含义。表21列出了C+的保留字。 ANSI C规定有32个保留字,表中用黑正体 字表示; ANSI C++在此基础上补充了29个保留字,表中用黑斜体字表示。本书不作介绍的 表中用白体字表示。为了使语言能更好地适应软件开发环境,BC或VC对保留字进行了扩 充,在表中用白斜体字表示。VC与BC对关键字的扩充内容是不同的,这里只是常用的和 共同扩充的几个 表21常用基本数据类型描述 char cont eden strow c cast 时 atc cast
图中bpe表示非空数据类型。 除上述一些基本数据类型外,还有一些数据类型修饰符,它用来改变基本类型的意义 以便更准确地适应各种情况的需要。修饰符有log(长型符)、hor(短型符)、sned(有符号) 和 unsigne(无符号)。 数据类型的播述确定了其内存所占空间大小,也确定了其表示范围。以在16位计算机 中表示为例,基本数据类型加上修饰符有表22的描述。 表22常用基本效据类型描述 长度 类型 说明 字节) 衰示范园 字符型 无符号字符型 有符号字符型 -27-(27-1) 整型 -32768~32767 25~(25-1) 无符号整型 20~65535 有符号整型 -32768-32767 25~(215-1) Short int 短整型 32768-32767 unsigned sbot int无符号短整型 0~65535 咖证有符号短蘩2 -32768~32767 25~(215-1) 长整型 -21474868-2144867-2x-(21-1) 有符号长整型 2147483648-2147483647 unsigned long int}无符号长型型 0~4294967295 0~(22-1) 浮点型 3,4×108-3,4x1038 7位有效位 double 双精度型 -1.7×100-1.7x1015位有效位 Long double 长双精度型 10-34×10-1.1×109位有效位 在大多数计算机上, short int表示2个字节长。sho只能修饰int, short int可以省略为 shorto log只能修饰in和 double。修饰为 long int(可以省略为ong)时,一般表示4个字节,修 饰 long double时,般表示10个字节。 unsigned和 signed只能修饰char和it。一般情况下,默认的char和in为 signed。实型 数鱼ou和 double总是有符号的;不能用 unsigned修饰。 用se(数据类型)可以确定某数据类型的字节长度。例如用下面的语句: cout <<size of int is < sizeof(int) < endl 在16位计算机上将输出 s主 ze of int is2 强类型语言