查权重网站(快手账号权重下载)
12342023-12-02
今天给各位分享不定长结构体定义的知识,其中也会对结构体不建议typedef进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录
作用就是凡是以后需要定义一个structa类型的变量,可以用b来定义,例:structaexample;也可以这样定义bexample;两者是等价的
typedefstructItem
{
DATAdata;//你想要存储的一些属性等
intiSize;//后续数据的大小
characData[1];//从这里开始记录你的数据
}Item;
每次为一个新的Item申请空间时,申请大小为:
sizeof(Item)+iDataSize
这里的iDataSize就是你想存储的活用空间大小。
调用的时候,直接写结构体的acData[n]就可以了,可能会浪费几个字节的空间,但这些应该可以忽略。
原理是将acData[0]当作数据开始的部分,而acData[n]虽然越界了,但在你申请的空间范围内,所以不会有问题。
另外一种方法是在结构体里声明一个指针,用指针来记录数据的位置。
结构体可以理解成对数据做了一个封装,成为一个新的数据类型,指向结构体的指针,和平常的指针是一样的。指针保存的是这个结构体的起始地址!typedefstructMY{inta;intb;}MY;MY*prMy=NULL;MYtest;prMy=&test;prMy就是指向结构体变量test的内存地址,实际上也就是inta;变量的地址,
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!