分类分类
关注+2011-05-25作者:不详
A:我是这样定义的,不知对不对
typedef struct tagTest{
int uID;//标志
int iNum;//个数
int offset;//偏移量
char *str;//指针
}TEST_S;
uID是固定的,iNum个数是这样的,根据后面的,比如:
我需要返回两对数据,则为2,但我不知如何把这两对数据存入这个结构体中,也有可能是3对数据,数据类型可以是int .谢谢!
B:我认识一个高人,很喜欢用这种结构,他颇有心得,我就在这里说一下
type struct tagTest
{
int uID;
int iNum;
int offset
int data[1];
} test;
data是一个数据,个数为1,但是其实在使用的时候,不一定为1,也就是说在上述结构不能
直接test tt;这样声明,必要声明成指针,然后在malloc的时候,根据iNum数目进行申请,
譬如iNum为5个int,这可以这样
p = (test *)malloc(sizeof(test) + (iNum - 1) * sizeof(int));
这样,后面的内容可以通过p-> data[i]访问了:)
C:如果编译器够新,可以用VLA:
type struct tagTest
{
int uID;
int iNum;
int offset
int data[];
} test;
使用时就不需要减一了:
p = (test *)malloc(sizeof(test) + iNum * sizeof(int));
这里的data只是个占位符,sizeof(test)=3*sizeof(int)。
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论