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语言绘制正余弦曲线的方法
热门文章 没有查询到任何记录。
查看所有0条评论>>