struct的疑问
最近用c++写程序,发现有些语法上的问题还没有搞清楚
比如下面关于struct的一个问题,
ITEMIDLIST是一个item ID 的列表.
也就是说 ITEMIDLIST应该包括1个到多个SHITEMID类型的.可为什么头文件的定义里只有一个?
typedef struct _ITEMIDLIST
{
SHITEMID mkid; //????一个还是多个
} ITEMIDLIST;
其中 SHITEMID在头文件中定义如下:
typedef struct _SHITEMID
{
USHORT cb;
BYTE abID[ 1 ];
} SHITEMID;
我的问题是:根据我的理解,按照上面的定义,ITEMIDLIST 和SHITEMID应该是几乎一样的。 但是实际上, SHITEMID是表示一个ID, 而ITEMIDLIST是用来表示由多个ID组成的列表。
请大家帮助我解释一下上面这种定义方式。
还有一个问题:在c++中, class 和struct有什么区别? 语义上是一样的么? 内存分配上是不是相同? (因为.net平台上,struct是分配栈空间,而class在堆上分配空间,两者有本质的不同)
谢谢