零长度数组是gnu/gcc的实用性扩展,又称为可变数组,目的是为了构造可变长的结构体,更好地管理内存。
零长度数组相比于数组指针,优势在于:
1、节省了数组指针占用的空间;
2、一次性申请/释放内存(结构体+数组),不用分两次申请和释放(申请时先申请结构体内存,再申请数组内存:释放时先释放数组内存,再释放结构体内存)。
使用时在结构体的最后位置声明一个长度为0的数组,这样这个结构体就成为了一个可变长的结构体。
对于编译器而言,这个长度为0的数组仅仅是一个符号,不会占用任何空间。在结构体中,它只是代表了一个偏移量,为一个不可修改的地址常量。
上述程序运行的结果为:
从运行结果可以发现,结构体中的变长数组并不占用空间,且变长数组指向的地址就是所在结构体的末端地址。
页面更新:2024-03-24
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号