结构中的零长度数组

结构中的零长度数组

ID:38372660

大小:17.77 KB

页数:3页

时间:2019-06-11

结构中的零长度数组_第1页
结构中的零长度数组_第2页
结构中的零长度数组_第3页
资源描述:

《结构中的零长度数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、结构中的零长度数组Sunny.man有时候我们会碰到下面这样的结构体,这其中有一个结构长度为零的数组。这个结构有什么作用呢?这样定义是否合法?是否占用存储空间呢?下面我们依次解决这些问题。StructRep{Intsize,capacity;Charstr[0];}这个结构中str不占用存储空间,仅是一个符号。它在标准C中是不合法的,合法的定义应该是StructRep{Intsize,capacity;Charstr[];//这样定义}这样进行定义也同样不占用存储空间,它也仅仅是一个符号。下面的短文将解释这样用的好处和便利性。如上图所示如

2、果我们定义为StcuctRep{Intsize,capacity;Char*str;};我们在使用的时候,必须这样用Rep*prep=newRep;If(prep){Char*tempbuf=newchar[N];If(tempbuf){Prep->str=tempbuf;//需要初始化,并且附值。Buf的存储空间和结构体的存储空间也不是连续的,会出空内存碎片.}Else//如果buf分配不成功,需要删除结构体的空间。{}}通过上面的应用我们知道了最少两个原因使用这个特性:1.由于结构体和缓存不是一同分配在内存管理上复杂。2.需要初始化,

3、那里面的内存指针。如果我们使用了结构体内的零长度数组,我们在使用的时候,就可以这样使用.Rep*rep=reinterpret_cast(newint[4]);Rep->size=12;Rep->capacity=8;Memcpy(Rep->str,”Device”,6);Rep->str[6]=’’;这样做的好处是不仅避免了小内存碎片(结构体)而且可以把给指针分配的内存紧邻在结构体的后面,并且指针不需要被初始化,自然就被附值了。其内存中的结构如下图所示.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。