摘要: 1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句 阅读全文
posted @ 2019-05-12 17:33 狂奔~ 阅读(1679) 评论(0) 推荐(0) 编辑
摘要: 大小端模式 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这 阅读全文
posted @ 2019-05-12 15:52 狂奔~ 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 百盒测试:已知产品内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否要经过检查。 区别: 1.在测试的方面上有所不同:软件的黑盒测试意味着测试要在软件的接口处进行。软件的白盒测试是对软件的 阅读全文
posted @ 2019-05-12 15:47 狂奔~ 阅读(558) 评论(0) 推荐(0) 编辑
摘要: register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。例如下面的内存块拷贝代码, 但是使用register修饰符有几点限制 (1)register变量必须是能被CPU所接受的类型。 这通常意味着register变量必须是一个单个的值 阅读全文
posted @ 2019-05-12 14:04 狂奔~ 阅读(1462) 评论(0) 推荐(0) 编辑
摘要: 可以的,例如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值 阅读全文
posted @ 2019-05-12 13:57 狂奔~ 阅读(2889) 评论(0) 推荐(0) 编辑
摘要: dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用。 首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型, 这种检查不是语法上的,而是真实情况的检查。 dyn 阅读全文
posted @ 2019-05-12 12:32 狂奔~ 阅读(50149) 评论(0) 推荐(6) 编辑
摘要: 恢复内容开始 static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四个。 编译器隐式执行的任何类型转换都可以由static_cast来完成,比 阅读全文
posted @ 2019-05-12 10:50 狂奔~ 阅读(6319) 评论(0) 推荐(1) 编辑
摘要: 恢复内容开始 参考博客:https://www.cnblogs.com/QG-whz/p/4513136.html const_cast是一个基于C语言编程开发的运算方法, 其主要作用是:修改类型的const或volatile属性。使用该运算方法可以返回一个指向非常量的指针(或引用)指向b1, 就可 阅读全文
posted @ 2019-05-12 10:14 狂奔~ 阅读(1095) 评论(0) 推荐(1) 编辑
摘要: 原文链接:https://blog.csdn.net/xuwentao37x/article/details/27804169 多线程的程序是出了名的难编写、难验证、难调试、难维护,这通常是件苦差事。不正确的多线程程序可能可以运行很多年也不出一点错,直到满足某些临界的条件时,才出现意想不到的奇怪错误 阅读全文
posted @ 2019-05-12 09:35 狂奔~ 阅读(2593) 评论(0) 推荐(0) 编辑