文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

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

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

时间: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 优化原则