您的位置:首页技术开发 → 关于变长结构体 的一些讨论

关于变长结构体 的一些讨论

时间:2011/5/25 14:57:15来源:飓风整理作者:不详我要评论(0)

 
C语言2.0
授权:共享软件 大小:153KB 语言: 简体中文

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)。

相关视频

    没有数据

相关阅读 c语言中换行符是什么经典C语言小程序10例C语言学习之12个小问答简单说说BOOL和bool的区别怎样设计推箱子游戏C语言课程设计 贪吃蛇代码C语言实现画图程序C语言绘制正余弦曲线的方法

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 没有查询到任何记录。 SQL 优化原则C# 绘制统计图

人气排行 C语言学习之12个小问答C# 绘制统计图关于变长结构体 的一些讨论SQL 优化原则