函数是C++的编程模块.要使用函数,必须提供定义和原型,并调用该函数.函数定义是实现函数功能的代码:函数原型描述了函数的接口:传递给函数的值的书目和种类以及函数的返回类型.函数调用使得程序将参数传递给函数,并执行函数的代码.在默认情况下,C++函数按值传递参数.这意味着函数定义中的形参是新的变量,它们被初始化为函数调用所提供的值.因此,C++函数通过使用拷贝,保护了原始数据的完整性.C++将数组名参数视为数组第一个元素的地址.从技术上讲,这仍然是按值传递的,因为指针是原始地址的拷贝,但函数将使用…
第7章 函数--C++的编程模块 1. 函数的返回类型不能是数组,但可以是其他任何一种类型,甚至可以是结构和对象.有趣的是,C++函数不能直接返回数组,但可以将数组作为结构或对象的组成部分来返回. 2. 在C++中括号为空意味着不指出参数.在ANSI C中,括号为空意味着不指出参数.在C++中,不指定参数列表时应该用省略号. void say_bye(-); 3.  数组名数组名解释为其第一个元素的地址有一些例外,首先,对数组名使用sizeof将得到整个数组的长度:其次,将地址运算符用于数组名时…
1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i; printf("ch[%d] = %c\n", i-97, ch[i-97]); } printf("That is all! thanks~\n"); return 0; } 这是之前写的,有点乱,改了些如下: #include int main(void) {…
函数-C++的编程模块   1.C++对于返回值的类型有一定的限制:不能是数组,但可以是其他任何类型——整数.浮点数.指针,甚至可以是结构和对象(有趣的是,虽然C++函数不能直接返回数组,但可以将数组作为结构或者对象的组成部分来返回). 2.函数时如何返回值的?通常,函数通过将返回值复制到指定的CPU寄存器或内存单元中来将其返回.随后,调用程序间查看该内存单元.函数原型将返回值类型告知调用程序. 3.为什么需要函数原型?原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型(如果有的话)以…
正如第一章所说:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 如下图所示,函数可以重载,是一段实现某些功能命名了的代码. 一个完整的函数的构成有四部分: 1.返回类型 2.函数名 3.形参 4.函数体 对于返回类型来说,return语句返回的类型必须和返回类型一致,或者可以转换. 对于函数名来说,允许多个函数使用相同的名字,当参数不同时,形成重载.对函数名使用调用运算符,则执行函数. 对于形参来说,可以是传值的,也可以是传引用的. 对于函数体来说,必须是在一对花括号包围的…
复习题: 8. int choice(int a,int b,int c){ int max; max = a; if (b > max) max = b; if (c > max) max = c; return max; } 9. #include <stdio.h> void menu(void); int choice(int low,int high); int main(void){ menu(); int ch = choice(1,4); switch (ch){…
1. /* 整数上溢 */ #include <stdio.h> int main(void) { ; unsigned ; /* 无符号整数j像一个汽车里程指示表(形容的太好了,可参考<计算机科学导论>第3章 数据存储,有图), 当达到最大值时,它将溢出到起始点.整数i也是同样.它们的主要区别是unsigned int变量j的起始点是0(正像里程 指示表那样),而int变量i的起始点则是-2147483648.——参考<C Primer Plus> */ printf…
C++提供了集中重用代码的手段.第13章介绍的共有继承能够建立is-a关系,这样派生类可以重用基类的代码.私有继承和保护继承也使得能够重用基类的代码,单建立的是has-a关系.使用私有继承时,积累的公有成员和保护成员将称为派生类的私有成员:使用保护继承时,积累的公有成员和保护成员将称为派生类的保护成员.无论使用哪种继承,基类的共有接口都将称为派生类的内部接口.这有时候被称为继承实现,但并不继承接口,因为派生类对象不能显式地使用基类的接口.因此,不能将派生类对象看作是一种基类对象.由于这种原因,在…
本章介绍了定义和使用类的许多重要方面.其中的一些方面是非常微妙甚至很难理解的概念.如果其中的某些概念对于您来说过于复杂,也不用害怕——这些问题对于大多数C++的初学者来说都是很难的.通常,对于诸如复制构造函数等概念,都是在由于忽略它们而遇到了麻烦之后逐步理解的.本章介绍的一些内容乍看起来难以理解,但是随着经验越来越丰富,对其理解也将越透彻.在类构造函数中,可以使用new为数据分配内存,然后将内存地址赋给类成员.这样,类便可以处理长度不同的字符串,而不用在类设计时提前固定数组的长度.在类构造函数中…
本章讨论的话题 python如何计算装饰器句法 python如何判断变量是不是局部的(通过函数内部是否给变量赋值过来判断是否是局部变量) 闭包存在的原因和工作原理(闭包是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定.函数中的函数) nonlocal能解决什么问题(nonlocal是新出现的保留关键字,python3.0中引入)(将局部变量声明为自由变量) 探讨 实现行为良好的装饰器 标准库中有用的装饰器 实现一个参数化的装饰器 装…