2007年04月
右移一个带符号数在某些机器上会用符号位进行填充(“算数移位”)而在其他机器上会用0进行填充(“逻辑移位”)。
阅读全文>
发表于 @ 2007年04月24日 19:19:00|评论(loading...)|编辑
以上的对齐原则其实是尽量整齐排列、尽量节省内存。
2. 声明成员应该尽量避免不同类型错杂开来,最好采用从小到大或者从大到小的顺序(错开后,会因为上对齐和下对齐而增加填充开销)。
3. 编译器缺省采用8字节对齐主要是因为最大基本类型为8自己(以前自己不明白,在论坛提过问,后来,以为是SSE指令的原因)。……
阅读全文>
发表于 @ 2007年04月23日 19:00:00|评论(loading...)|编辑
编译器总是要为函数的每个参数制作临时副本。
如果函数体内的程序修改了副本的内容,就导致参数的内容作相应的修改。
在本例fun1中,para的副本申请了新的内存,即副本所指的内存地址和参数所指的内存地址不一致了。
所以在fun1中修改的参数内容在函数返回后para还是NULL……阅读全文>
发表于 @ 2007年04月23日 18:58:00|评论(loading...)|编辑
volatile的本意是“易变的”
由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。……阅读全文>
发表于 @ 2007年04月23日 18:57:00|评论(loading...)|编辑
可以节省空间,避免不必要的内存分配。#define PI 3.14159
常量宏 const doulbe Pi=3.14159; 此时并未将Pi放入ROM中阅读全文>
发表于 @ 2007年04月23日 18:55:00|评论(loading...)|编辑
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针
的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身
所占据的内存区。让我们分别说明。 阅读全文>
发表于 @ 2007年04月23日 18:52:00|评论(loading...)|编辑
assert的使用 错误处理方式 查找错误的出处用到的几个宏
#error 的用法 位操作时应注意的问题等阅读全文>
发表于 @ 2007年04月23日 18:50:00|评论(loading...)|编辑
cout ;>;>;好像无论在"abc"前加几个&,输出都为abc
没错,就是这样,因为 & 是取地址。取 10 遍还是取阅读全文>
发表于 @ 2007年04月23日 18:42:00|评论(loading...)|编辑