谭浩强版《C++程序设计》知识点(6)
时间:2025-04-20
时间:2025-04-20
为谭浩强版教材,楼建华教授总结
格式 函数值类型名 函数名(形参表);
其中,形参可省略,但形参的类型不可省略。
*4.9 函数不可嵌套定义(函数定义中嵌套定义其它函数),但允许嵌套调用(函数定义中调用其它函数或自身)。
*4.10 在函数的定义中直接或间接调用自身,称作函数的递归调用,简称递归。
4.11 递归有三大要点:①递归条件(或回归条件);②非递归操作(回归操作);③递归操作。 *4.12 递归函数的核心结构为:
结构一 if(回归条件)回归操作 else 递归操作
结构二 if(递归条件)递归操作 else 回归操作
4.13 C语言要求,函数中定义变量、数据结构的语句必须在其它语句之前。C++没有此限制。 *4.14 变量的属性分为:①数据类型;②作用域;③存储类别;④存在期。
*4.15 函数形参及函数或复合语句内定义的变量称作局部变量,它从定义处生效,只在该函数或复合语句内有效。因此,不同函数或复合语句中的局部变量可以同名,但同名不同义。
*4.16 在所有函数之外定义的变量称作全局变量,从定义处生效。
4.17 对于函数,之前定义的全局变量均称作外部变量。对于复合语句,之前定义的全局变量和同一函数中之前定义的局部变量均称作外部变量。
*4.18 如果局部变量与外部变量同名,则同名外部变量被屏蔽。
*4.19 局部变量的存储类别分为:动态(auto,又称自动)、静态(static)、寄存器(register)。 *4.20 局部变量存储类别的定义格式为:
格式 存储类别 数据类型 局部变量表;
其中,存储类别和数据类型的位置可交换,默认存储类别为auto,默认数据类型为int,但不能同时缺省。 *4.21 auto型局部变量占用动态数据区,当函数调用结束时释放所占内存。register占用CPU中的寄存器,但寄存器不够用时,占用动态数据区。
*4.22 全局变量和static型局部变量占用静态数据区,默认初值为相应数据类型的0。
*4.23 static型局部变量的定义和初值化只执行一次,即使离开其作用域也不释放所占内存。
4.24 定义全局变量时,如果加前缀static,称作内部全局变量,不能被其它文件调用,否则,称作外部全局变量,允许其它文件调用。使用其它文件中定义的外部全局变量,需作extern声明。
4.25 定义函数时,如果加前缀static,称作内部函数,不能被其它文件调用,否则,称作外部函数,允许其它文件调用。使用其它文件中定义的外部函数,需作extern声明。
*4.26 预处理命令在程序编译前执行,其主要功能是“文本置换”。每个宏定义必须独占一行。预处理不是语句,不可随意跟分号。
*4.27 不带参数宏定义的格式和功能如下:
格式 #define 宏名 文本
功能 在预处理时,将程序中之后出现的这个宏名均用指定的文本置换。
4.28 带参数的宏定义的格式和功能如下:
定义格式 #define 宏名(形参表) 文本
使用格式 宏名(实参表)
功能 在预处理时,将程序中之后出现的这个带参数的宏均用指定文本置换,其中,形参被相应的实参直接置换(实际上是两次置换)。形参没有类型的概念,没有函数值的概念,对实参不作运算。
4.29 终止宏定义的格式为:#undef 宏名
4.30 允许重新定义宏所代表的文本,新定义只作用于其后的宏名。
4.31 “文件包含”处理(加载文件命令)
格式一 #include<文件名>
格式二 #include"文件名"
功能 把指定文件加载到此处。如果没有指定文件路径,前种格式直接到存放C头文件的目录中查找,后种格式先在程序文件所在目录中查找,如果未找着,方到存放C头文件的目录中查找。
4.32 条件编译命令的格式和功能如下:
格式一 #ifdef 宏名 程序段1 #else 程序段2 #endif
格式二 #ifndef 宏名 程序段1 #else 程序段2 #endif
格式三 #if 常量表达式 程序段1 #else 程序段2 #endif
功能 如果指定的宏名已定义(格式一)、宏名未定义(格式二)、条件为真(格式三),保留程序段1,否则保留程序段2。最终,整个程序段仅剩程序段1或程序段2。
当程序段2为空时,#else可省略。格式三中的条件必须是常量式。
上一篇:中国近代社会生活的变迁
下一篇:2007编目研究会工作汇报