C++实用教程-函数和预编译.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C实用教程-函数和预编译

《Visual C++实用教程》-函数和预编译 C++函数和预处理 1 函数的定义 2 函数的参数传递 3 带默认形参值的函数 4 函数的递归调用 5 内联函数 6 函数的重载 7 预处理 1.1 函数的定义 C/ C++程序:是一个或多个函数组合而成的。 1.2 函数的声明(或称函数原型) 定义一个函数就是为了以后调用,但如果函数定义在后,而调用在前,就会产生编译错误。 解决方法:对函数进行声明 为提高程序的可读性、保证简洁的程序结构,通常将main放在程序开头,而将函数原型声明放在main之前。 1.3 函数的调用 函数调用的一般形式: 函数名(实际参数表) 2 函数的参数传递 如果一个函数试图修改一个全局变量的值,就会引起结构不清晰、容易混淆,因此,应尽量采用局部变量,而将形参和函数类型作为公共接口,以保证函数的独立性。 [例2]函数实例。 main() { int x=1; void f1(),f2(); f1(); f2(x); printf(x=%d\n,x); } void f1(void) { int x=3; printf(x=%d\t,x); } void f2(x) int x; { printf(x=%d\t,++x); } 3 带默认形参值的函数 C++中,允许在函数的声明或定义式给出一个或多个参数指定默认值,这样,在调用时,可以不给出参数,而按指定的默认值工作。 4 函数的递归调用 递归函数:又称自调用函数,简洁但不一定高效。 三个条件:(1)递归问题的规律; (2)通过转化解决问题; (3)有终止递归的条件。 嵌套调用 在调用一个函数的过程中再调用另一个函数。 [例5] 汉诺塔问题。三根针A、B、C,A上有64个盘子,大小不等,小上大下。要将所有盘子移至C针,可借助于B,每次移一盘,且移动过程中三根针上盘子保持小上大下,打印出移动步骤。 5 内联函数 函数在调用时,首先需要保存主调函数的现场和返回地址,当被调函数执行完毕,先恢复主调函数现场,取出返回地址并将返回值赋给函数调用本身,这个过程对系统的开销比较大。为提高程序运行效率——内联函数。 内联函数:把函数代码直接插入到调用处,将调用函数的方式改为顺序执行直接插入的代码。减少程序的执行时间,但同时需要更多的内存空间。空间换时间 内联函数的定义:在函数返回值类型前增加关键字inline 6、函数重载 函数重载是指C++允许多个同名的函数存在,但同名的各个函数的形参必须有所区别:形参的个数不同,或者形参的个数相同,但类型有所不同。 7 预处理 C++提供了3种编译指令: 宏定义命令 文件包含命令 条件编译命令 7.1 宏定义命令 不带参数的宏定义: #define 宏名 常量 注意: 1、#define PI和3.1415926之间一定要有空格,且一般将宏名定义成大写,以与普通标示符相区别。 2、宏被定义后,一般不能再重新定义,而只有当使用如下命令才可以: #undef 宏名 3、一个定义过的宏名可以用来定义其他新的宏,但要注意其中的括号。 例如:#define WIDTH 80 #define LONGTH (WIDTH+10) 宏LONGTH等价于 #define LONGTH (80+10) 其中的括号不能省略,因为当 var = LENGTH*20 预处理后变成:var=(80+10)*20; 若宏中没有括号,则预处理后var=80+10*20; 带参数的宏定义的一般形式: #define 宏名(参数表) 字符串 宏与函数的异同点: (1)??带参数的宏定义只是进行简单的字符替换。 (2) 宏展开是编译时进行,且展开时不分配内存单元,不进行值的传递处理。 (3)?宏定义不存在类型问题,宏名无类型,其参数也无类型,只是一个符号代表。宏定义时,字符串可以是任何类型的数据。 (4)??宏可以得到几个结果。 (5)??宏展开后源程序增长。 (6)??宏替换不占运行时间,只占编译时间。 7.2 文件包含 格式: #include “文件名” #include 文件名 注:(1)一般被包含文件以.h为后缀。 (2)一个#include命令只能指定一个被包含文件。 (3)文件包含的“”格式,通常用于包含用户定义的放在当前目录或其他目录下的头文件或其他源文

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档