c结构体中char[0]的作用-实现数组扩展

struct Data

{

      int len;

      char data[0];

}

原来的data中没有元素,不分配内存,结构体Data的大小为4

假如现在分配15字节的内存,并且将指向这块内存的指针强制转换为(Data*):

Data*  pData=(Data*)malloc (sizeof(Data)+11)

malloc申请了15个字节的连续内存空间,强制转换为指向只有4个字节大小的结构体的指针时,前面4个字节被认为是Data结构,后面的部分可以扩展。比如:

char str[11]="helloworld";

Data*  pData=(Data*)malloc (sizeof(Data)+11)

memcpy(pdata->data,str,11);

那么cout<<pData->data输出的是:

helloworld

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值