2011年10月3日

     摘要:     先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天都十分纠结。后来万般无奈请教一个朋友,才获悉可能是结构体对齐的事,一查、一改,果真如此。    问题是解决了,可网上的资料多数只提到内存对齐是如何做的,...  阅读全文

posted @ 2011-10-03 17:39 张宇 阅读(497) | 评论 (0)编辑 收藏

2011年7月31日

1、使用柔性数组可使大量定义的结构体在内存中的处理更加简捷(之前竟然不会,看来读的代码实在是太少了),如自定义的一个文件名称的结构体:
typedef struct strFileName{
UCHAR line_num;//动态中保留
UCHAR lenByByte;//文件名长度,字节长度,不解释字符集
UCHAR type;
UCHAR page_code;
char  name[0];};

使用char name[0],可以在得到名称长度后,一次性将空间申请好,免去再指针一次的麻烦。
2、使用数组方式调用内存流的方法,如定义一个结构体:
typedef struct strFileName{
UCHAR line_num;//动态中保留
UCHAR lenByByte;//文件名长度,字节长度,不解释字符集
UCHAR type;
UCHAR page_code;};

如果再 strFileName* pA=new strFileName [100];
可以直接使用pA[0]指第一个结构体,pA[1]指第二个结构体(以前笨笨的老是用强制转换实现,汗。。)
3、关于函数指针(个人看法):
.h文件似乎就是定义了一个函数指针,实例化后,会把实例化后的函数地址,写在函数指针里,所以在定义函数指针时,一定要定义前已经对目标实例化。
多个源文件的编译过程也可以理解了,不包含.h,就无法找到具体实现函数的入口,其实包含了也不会影响太大性能。

posted @ 2011-07-31 17:43 张宇 阅读(483) | 评论 (0)编辑 收藏

仅列出标题