c语言变长结构体

您所在的位置:网站首页 c语言定义一个结构 c语言变长结构体

c语言变长结构体

2024-07-15 10:05| 来源: 网络整理| 查看: 265

     1.什么是变长数组

struct MyData { int nLen; char data[0]; }; sizeof(MyData)=4;

可能有的编译器不支持char data[0];需要用char data[1];代替,这样上面结构体大小是sizeof(MyData)=8(字节对齐);

在上结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容),这种声明方法可以巧妙的实现C语言里的数组扩展。

如下下所示:

#include using namespace std; struct MyData { int nLen; char data[0]; //如果这里用char* data;代替呢?是一个指针占用空间,而采用变长数组不占内存,数组名只是一个符号 //代表一个不可修改的地址常量 }; int main() { int nLen = 10; char str[10] = "123456789"; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3