C语言柔性数组

在C语言中,结构体定义数组指定长度0,sizeof时候不计入占用,实际分配时候占用为准!

也许你从来没有听说过柔性数组的概念,但其确实存在。C99规定:结构中的最后一个元素允许是未知大小的数组,这就叫做"柔性数组"成员。

test_struct_array.c

c 复制代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct sa{
        int a;
        char ca[0];//或者char ca[];
};
struct sa_other{
        int a;
        char ca[100];
};
int main(void)
{
        struct sa *sa_ = (struct sa *)malloc(sizeof(struct sa) + 100);
        struct sa_other sa_other_;
        memset(sa_->ca,'\0',100);
        strcpy(sa_->ca, "This is www.spacefly.cn.");
        printf("%zd\n",sizeof(*sa_));
        printf("%s\n",sa_->ca);
        
        printf("%zd\n",sizeof(sa_other_));
        return 0;
}
相关推荐
WL学习笔记10 分钟前
顺序表详解
c语言·数据结构
c++之路1 小时前
CMake 系列教程(一):CMake 基础知识
c语言·开发语言·c++
我还记得那天1 小时前
C语言随机数生成机制与猜数字游戏实现
c语言·开发语言·游戏
万法若空2 小时前
C/C++基本类型表示范围
c语言·开发语言·c++
J2虾虾3 小时前
C 语言 sizeof 完全用法指南
c语言·数据结构·算法
xxwxx__4 小时前
51单片机定时器/计数器中断详解(T0和T1)——从入门到精通
c语言·单片机·嵌入式硬件·51单片机
cft56200_ln4 小时前
TDA4时间同步3 网卡添加虚拟时间戳
c语言·开发语言·arm开发·驱动开发·嵌入式硬件·网络协议
189228048614 小时前
NV091固态MT29F16T08EWLCHD8-QJES:C
c语言·开发语言
AI thought4 小时前
C语言企业项目实战(四)
c语言·单元测试·压力测试·企业项目·工程体系
AI科技星4 小时前
《数术工坊:无穷套娃录》 一部用数学套娃写成的“天书小说”
c语言·开发语言·网络·量子计算·agi