本文共 527 字,大约阅读时间需要 1 分钟。
定义结构体时,往往其成员中含有变长的元素,可用以下方法解决
一、定义变长数组
struct CToolBarData
{ WORD wVersion; //版本号 ==1 WORD wWidth; WORD wHeight; WORD wItemCount; //给出后面有几项 WORD aItems[1];}abc;
将结构体最后一个元素定义为含有一个元素的数组,倒数第二个成员定义其数组含有几个元素
这样只要申请(sizeof(struct CToolBarData)+(wItemCount-1)*sizeof(WORD ))字节的连续内存,
访问abc.aItems[n],其中n的取值范围为0~wItemCount-1,均是合法的
二、定义函数
struct CToolBarData
{ WORD wVersion; //版本号 ==1 WORD wWidth; WORD wHeight; WORD wItemCount; //给出后面有几项WORD* items()
{ return (WORD*)(this+1); }};结构体最后一个成员为指针函数,返回紧挨着结构体的第一个指针,只要申请的内存足够且连续,则均可用此法访问
转载地址:http://pneki.baihongyu.com/