第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内联函数,需要在: 函数声明前加上关键字inline; 函数定义前加上关键字inline; 3. 程序员请求将函数作为内联函数时,编译器不一定会满足这种需求.它可能认为该函数过大或注意到函数调用了自己(内联函数不能递归). 4. 必须在声明引用变量时进行初始化 int rat = 101; int &…
1. 摘录 默认参数指的是当函数调用中省略了实参时自动使用的一个值. 默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式.使用默认参数,可以减少要定义的析构函数.方法以及方法重载的数量. 试图在同一个文件(或转换单元)中使用同一种类型的显式实例和显式具体化将出错. 2. 最佳函数匹配 完全匹配 > 提升转换 > 标准转换 > 用户定义的转换 通常有两个函数完全匹配是错误的,但有两个例外. const和非const之间的区别只适用于指针和引用指向的数据 非模板函数将优于模板函数 在…
C++ 扩展了 C 语言的函数功能.通过将 inline 关键字用于函数定义,并在首次调用该函数前提供其函数定义,可以使得 C++ 编译器将该函数视为内联函数.也就是说,编译器不是让程序跳到独立的代码段,以执行函数,而是用相应的代码替换函数调用.只有在函数很短时才能采用内联方式.引用变量是一种伪装指针,它允许为变量创建别名(另一个名称).引用变量主要被用作处理结构和类对象的函数的参数.通常 ,被声明为特定类型引用的标识符只能指向这种类型的数据:然而,如果一个类(如ofstream)是从另一 个类…
正如第一章所说: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和2的前提下,为被装饰对象添加上新功能 开放封闭原则:对修改封闭,对…
C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double a=1.0,b=2.0,sum; ) { i=-i; sum=i/b; a=a+sum; b=b+; } printf("%f\n",a); ; } 2.用C语言设计程序算出1x2x3x4x5的值 #include<stdio.h> int main() { int t,i;…
<C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/9479711…
第八章 函数探幽 1.常规函数与内联函数的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中. 2.常规函数调用使程序跳到另外一个地址(函数地址),并在函数结束时返回,更详细的的实现过程:执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码(也许还需将返回值i放入寄存器)然后跳回到地址被保存的指令处.来回跳跃并记录跳跃位置意味着以前使用函数时,需要一定的开销. 3.内联函数:编译器将使…
术语表 第 6 章 函数 二义性调用(ambiguous call): 是一种编译时发生的错误,造成二义性调用的原因时在函数匹配时两个或多个函数提供的匹配一样好,编译器找不到唯一的最佳匹配.    实参(argument): 函数调用时提供的值,用于初始化函数的形参.    Assert: 是一个预处理宏,作用于一条表示条件的表达式.当未定义预处理遍历NDEBUG时,assert对条件求值.如果条件为假,输出一条错误信息并终止当前程序的执行.    自动对象(automatic object):…
第7章 函数--C++的编程模块 1. 函数的返回类型不能是数组,但可以是其他任何一种类型,甚至可以是结构和对象.有趣的是,C++函数不能直接返回数组,但可以将数组作为结构或对象的组成部分来返回. 2. 在C++中括号为空意味着不指出参数.在ANSI C中,括号为空意味着不指出参数.在C++中,不指定参数列表时应该用省略号. void say_bye(-); 3.  数组名数组名解释为其第一个元素的地址有一些例外,首先,对数组名使用sizeof将得到整个数组的长度:其次,将地址运算符用于数组名时…
程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void main() { ,,,,,,, }; cout << cookies << " =array address," << sizeof cookies << " =sizeof cookies" << endl;…
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) {…
Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; printf("Convert mins to hours and minutes\n"); printf("Please enter the mins: \n"); scanf("%d", &mins); while (mins >…
Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[20]; printf("My Handsome Master, please enter your name: \n"); scanf("%s %s", &name, &family); //名字和姓氏一起读的话,需要先输入名字再输入姓氏,中间要有空白字…
''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点笔记”“本章习题” - 标题1,二级标题用- 标题2,笔记大纲标题.习题题目- 加粗,16px ''' 重点笔记 一. 函数设计概念 耦合性: 对于输入使用参数并且对于输出使用return语句 1 耦合性: 只有在真正必要的情况下使用全局变量 耦合性: 不要改变可变类型的参数,除非调用者希望这样做…
''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点笔记”“本章习题” - 标题1,二级标题用- 标题2,笔记大纲标题.习题题目- 加粗,16px ''' 重点笔记 摘要 函数是Python为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构.一. 为何使用函数 最大化的代码重用和最小化代码冗余 流程的分解 本章习题: 1. 编写函数有什么…
第6章 函数 6.1函数的创建和调用 提到函数,大家会想到数学函数吧,函数是数学最重要的一个模块,贯穿整个数学学习过程.在Python中,函数的应用非常广泛.在前面我们已经多次接触过函数.例如,用于输出的print() 函数.用于输出的input() 函数及用于生成一系列整数的range() 函数,这些都是Python内置的标志函数,可以直接使用.除了可以直接使用的标准函数外,Python还支持自定义函数.即通过将一段有规律的,重复的代码定义为函数,来达到一次编写.多次调用的目的.使用函数可以提…
Swift 1.1语言第7章  函数和闭包 在编程中,随着处理问题的越来越复杂.代码量飞速添加. 当中,大量的代码往往相互反复或者近似反复.假设不採有效方式加以解决.代码将非常难维护. 为了解决问题,人们提出了函数这一概念. 使用函数能够将特定功能的代码封装.然后在非常多的地方进行使用.本章将会解说函数和闭包的相关内容. 本文选自<Swift 1.1语言高速入门> 7.1函数介绍 函数是运行特定任务的代码块.使用函数会给开发这带来非常多的优点. 下面总结了当中两点. 1.结构鲜明.便于理解 假…
javascript进阶课程--第一章--函数 学习要点 了解内存管理 掌握全局函数的使用 知识点 基本类型和引用类型 基本类型值有:undefined,NUll,Boolean,Number和String 这些类型分别在内存中占有固定的大小空间,例如:数值型在内存中占有八个字节,布尔值只占有一个字节...... 他们的值保存在栈空间,我们通过按值来访问的. 引用类型:对象.数组.函数. 引用类型内存中占有的空间不固定,但是内存地址大小是固定的,因此存储的实际上是数据的内存地址. 在变量复制时候…
第六章 函数 一.函数基础 函数定义:包括返回类型.函数名字和0个或者多个形参(parameter)组成的列表和函数体. 调用运算符:调用运算符的形式是一对圆括号 (),作用于一个表达式,该表达式是函数或者指向函数的指针. 圆括号内是用逗号隔开的实参(argument)列表. 函数调用过程: 1.主调函数(calling function)的执行被中断. 2.被调函数(called function)开始执行. 形参和实参:形参和实参的个数和类型必须匹配上. 返回类型: void表示函数不返回任…
删除指针后,该指针就变成了悬垂指针.悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了. 习题7.8 举一个例子说明什么时候应该将形参定义为引用类型.再举一个例子说明什么时候不应该将形参定义为引用. 解答: 如果希望通过函数调用修改实参的值,就应该将形参定义为引用类型. 例如,用swap函数交换两数的值.如果不将形参定义为指针类型,则需要直接修改实参的值,应该将形参定义为引用类型: void swap(int &v1 , int &v2) { int temp = v2; v2 = v…
C++Primer第5版学习笔记(二) 第三章的重难点内容         这篇笔记记录了我在学习C++常用基本语法的学习过程,基本只记录一些重难点,对概念的描述不是一开始就详尽和准确的,而是层层深入的.第三章主要讲这么五个概念:       1.using声明,我知道挺多同学写代码练手都要在源文件前几句直接加using namespace std;然而using语句并不是什么情况都这么使用的,稍后我们将会看到详细的用法.  2.标准库类型string,和C味的字符数组有区别的string,到底…
Linux就这个范儿 第13章 打通任督二脉 0111010110……你有没有想过,数据从看得见或看不见的线缆上飞来飞去,是怎么实现的呢?数据传输业务的未来又在哪里?在前面两章中我们学习了Linux网络方面的各种工具,打造了形形色色的网络服务.然而我们并不满足于仅仅知道这些表面的知识,还希望深入了解它们的底层实现.那就来吧,打通任督二脉,探究不同类型的网络以及隐藏在网络后面的世界. 13.1 了解网络驱动工欲善其事,必先利其器.二十年前我们还走在狭窄的乡间小道开着信息牛车.时至今日,信息高速公路…
课后习题 6–1.字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? 答:成员关系操作符(in.not in) import string m_string = raw_input('请输入大字符串:') s_string = raw_input('请输入子字符串:') if s_string in m_string: print '子字符串在大字符串内' else: print "子字符串不在大字符串内" 6–2. 字符串…
C#中的函数式编程:递归与纯函数(二)   在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential transparency)来定义的.如果一个表达式满足将它替换成它的值,而程序的行为不变,则称这个表达式是引用透明的. 现在,我们不妨进行一个尝试:我们来实现一些函数,但是这次有一个限制:只能用无副作用的表达式. 先以素数判定为例子,我们要写一个函数bool IsPrime(int n),它返回这个…
上一篇我们主要讲解了函数的执行过程和原理,本篇我们将介绍函数的另外两个特殊表现:闭包和立即执行函数. 一 闭包 1,  闭包的形成 之前我们提到,函数执行完毕,马上就会销毁自己的AO对象.但是如果遇到下面这种情况:有子函数的定义,并将子函数返回.它真的就完全销毁了自己的AO对象吗? function fn(){ var a = 1; function son(){ console.log(a); } return son; } var test = fn(); test();//error ?…
这次我们来学习的是一些不是太常用,但却也非常有用的一些函数.它们中有些大家可能见过或者使用过,有一些可能就真的没什么印象了.它们都是 PHP 中文件系统相关操作函数的一部分.存在即合理,或许只是我们的业务开发中还没有接触到而已.不管别的,先混个脸熟,在真正需要它们的时候你能马上想起来 PHP 就自带一个这样的函数就可以了. 目录判断.创建.删除.路径缓存信息 var_dump(is_dir("./")); // bool(true) var_dump(disk_free_space(&…
核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运行时发生的,而不是编译时发生的,多以在代码里写变量的类型是多余的.'''''' 3-3避免在定义变量名开始或者结束的时候使用下划线的原因是:下划线对解释器有特殊的意义,而且是内建标识符所使用偶的符号,一般来讲_XXX被看做是私有的,在模块或者程序中外是 不可以调用的,__XXX__对Python来说…
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); } 32.判断是否打开视窗 function isViewportOpen() { return !!document.getElementById('wixMobileV…