HK Blog

不积跬步,无以至千里;不积小流,无以成江海。

C++ Primer学习笔记(六)

第五章 for、while、do while循环,表达式和语句,关系运算符,嵌套玄幻和二维数组。 第五章 循环和关系表达式 for循环 for循环为执行重复的操作提供了循序渐进的步骤: 设置初始值。 执行测试–循环是否应当继续进行。 执行循环操作。 更新用于测试的值。 初始化、测试和更新操作构成了控制部分,控制部分后面的语句叫做循环体,当测试表达式为tru...

C++ Primer学习笔记(五)

结构简介 结构是一种比数组更灵活的数据格式,同一个结构可以存储多种类型的数据。结构是用户定义的类型,而结构声明定义这种类型的属性。 创建结构的两个步骤: 定义结构描述(描述并标记能够存储在结构中的各种数据类型)。 按描述创建结构变量(结构数据对象)。 C++允许在声明结构变量时省略关键字struct。 结构声明的位置很重要。 可以将声明放在main()函数中,紧...

C++ Primer学习笔记(四)

第四章 string类的其它操作 函数strcat()将全部12个字符复制到数组site中,覆盖相邻的内存(可能会导致程序终止,或程序继续运行,但数据被损坏)。string类中自动调整大小的功能能够避免这种问题发生。 函数strlen()接受一个C-风格字符串作为参数,并返回该字符串包含的字符数。 函数size()的功能基本上相同,但句法不同:str1是一个对象,而size(...

C++ Primer学习笔记(三)

第四章 数组、字符串、结构、共用体、枚举、指针 第四章 复合类型 数组 数组声明应指出以下三点: 存储在每个元素中的值的类型 数组名 数组中的元素数 数组是存储同类型数据的集合。数组的维数必须是在编译期可以确定的常量,如整型字面值常量、枚举常量或者是常量表达式中已经初始化的const对象。数组定义如下: const unsigned buff_size=50...

CSAPP学习笔记(八)

第五章 探讨如何使用几种不同类型的程序优化技术,使程序运行地更快。 第五章 优化程序性能 编写高效的程序: 选择一组适当的算法和数据结构。 编写出编译器能够有效优化以转换成高效可执行代码的源代码。

CSAPP学习笔记(七)

第四章 流水线冒险 将流水线技术映入一个带反馈的系统,当相邻指令间存在相关时会导致出现问题。这些相关可能会导致流水线产生计算错误,称为冒险(hazard)。 数据相关:下一条指令会用到这一条指令计算出的结果 控制相关:一条指令要确定下一条指令的位置,例如在执行跳转、调用或返回指令时。 冒险分为数据冒险(data hazard)和控制冒险(control hazard...

C++ Primer学习笔记(二)

第三章 C++算术运算符 5种基本的C++运算符:+、-、*、/、%。(求模运算符两个操作数都必须是整型,该运算符用于浮点数将导致编译错误) 对于float,C++只保证6位有效位。 运算符的优先级和结合性 除法分支 除法运算符的行为取决于操作数的类型 两操作数均为整数,执行整数除法,丢弃小数部分使得最后的结果是一个整数。 存在操作数为浮点值,则小数部分将保留,...

CSAPP学习笔记(六)

第四章 存储器和时钟 组合电路从本质上来讲不存储任何信息,只是简单地响应输入信号,产生等于输入的某个函数的输出。 按位存储信息的设备:由同一个时钟控制的。(时钟是一个周期性信号,决定什么时候要把新值加载到设备中。) 时钟寄存器(寄存器)存储单个位或字。时钟信号控制寄存器加载输入值。 随机访问存储器(内存)存储多个字,用地址来选择该读或该写哪个字。 处理器从来不需要...

算法导论学习笔记(三)

第六章 介绍另一种排序算法————堆排序。堆排序的时间复杂度是O(ngln),,且堆排序具有空间原址性。 第六章 堆排序 heapsort 堆排序使用一种我们称为“堆”的数据结构来进行信息管理。 堆 (二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素。除最底层外该树是完全充满的。而且是从左向右填充,表示堆的数组A包括两个属性:A.le...

CSAPP学习笔记(五)

第四章 主要介绍处理器引荐的设计。研究一个硬件系统执行某种ISA指令的方式,更好地理解计算机是如何工作的。了解一个系统的内部工作原理。 第四章 处理器体系结构 定义一个简单的指令集x86,作为处理器实现的运行示例,称指令集为“Y86-64”(字节编码比较简单,机器代码没有x86-64紧凑) Y86-64指令集体系结构 定义一个指令集体系结构包括定义各种状态单元、指令集和它们的...