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

 

 


版权声明:本文为qq_38665104原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。