摘要:
MFC的单文档架构,有四个类(这里忽略About对话框类): MainFrame App Doc View 这四个类和MVC设计模式的关系如下: MainFrame代表着MVC的C (Control)。 App可以理解为对hInstance的封装。 Doc对应着MVC的M (Model)。 View 阅读全文
摘要:
常见的0xC0000005错误,往往是程序尝试对不可写内存区域写入数据导致的,这是使用指针的时候的常见错误。不过字符串常量区(也叫数据区,确切的说,字符串常量区是数据区的一部分)、代码区、堆、栈都是系统临时分配的一段内存而已,他们本质上没有区别。通过修改PE文件,我们可以修改对应内存的读写属性,从而 阅读全文
摘要:
背景介绍:游戏是仙剑一,剧情在打苗疆三人组之前,目的是修改李逍遥属性从而可以秒杀苗疆三人组的头领。 进入原始存档(存档文件名为1.rpg,位于游戏根目录下),查看李逍遥原始属性,如下图所示: 去后山打怪升级。打了一组树怪后,李逍遥属性升级,如下图所示: 存一个新档(存档文件名为2.rpg)。为了尽量 阅读全文
摘要:
C语言整形的除法的结果需要取整,例如 。C语言中的取整方式是向零取整。 取整风格共有3种: 1. 向零取整。即向坐标轴0的方向,取最近的整数。 2. 向上取整。也就是向+∞取整,即取不小于结果的最小整数。 3. 向下取整。也就是向 ∞取整,即取不大于结果的最大整数。 所以,C语言中计算 5除以3,因 阅读全文
摘要:
1.名称粉碎机制的由来 在C语言的语法中,函数名称是一个函数的唯一标识,如果一个文件内含有两个名称相同的函数,编译器就会报“函数已有主体”的错误;在多个文件链接时,如果发现有两个名称相同的函数,链接器就会报“符号重定义”的错误。 具有多态特性的C++支持函数的重载,函数不再以函数名称作为唯一标识。只 阅读全文
摘要:
C++语言是C语言的升级版,它支持更多的语法形式,用起来更加方便,功能也更加强大。本文尝试分析C+\+中针对const关键字进行的改进。 在C语言中,const关键字仅用于修饰指针类型的变量,最常见的例子就是strcpy函数了: 。这里const的作用是防止指针所指的内容(源字符串)在函数内被改变。 阅读全文
摘要:
问题起源自一道编程题:“用cout输出类似printf("%d", 浮点数)格式化浮点为整形的方式”。这道题目的要求,是用C++里cout的方式实现C语言中printf的功能,看似平淡无奇,其实大有深意,因为这里面隐藏了printf函数的一个内幕。 1. 疑问初现 在C语言中,把浮点数格式化为整形输 阅读全文
摘要:
前面《浮点型数据(float, double)存储IEEE标准解析和应用》(http://www.cnblogs.com/zhugehq/p/5918599.html) 一文说明了IEEE标准中浮点型数据的编码方式。本文将利用共用体和位段的知识,直接在程序中打印出浮点型数据被编码后的数值。 首先来看 阅读全文
摘要:
C++作为C语言的升级版,支持很多C语言不支持的语法。例如,函数中的局部变量不必在函数的最开始统一定义了,在函数内部随时定义新的局部变量成为可能。 比如下面的示例代码,在for循环的初始条件中定义了用于计数的整形变量i,这是不符合C语言语法规定的,故而无法通过C语言编译器的编译。 c++ int f 阅读全文
摘要:
在C语言中,浮点型变量(也就是带小数位的实数)在内存中的存储方式遵循IEEE标准。 首先来看单精度浮点型float。float占用4字节空间,也就是32位。从左向右数,第1位是符号位(0代表正数,1代表负数),接着是8位指数位,剩下的23位是数据位。如下所示 S EEEEEEEE DDDDDDDDD 阅读全文