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;
}
相关推荐
01二进制代码漫游日记16 分钟前
自定义类型:联合和枚举(一)
c语言·开发语言·学习·算法
二年级程序员1 小时前
单链表算法思路详解(下)
c语言·数据结构·算法
Sunsets_Red1 小时前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛
白太岁1 小时前
操作系统开发:(9) 从硬件复位到程序执行:如何编写符合硬件动作的启动文件与链接脚本
c语言·汇编·嵌入式硬件·系统架构
麦德泽特4 小时前
机器人赛事系统架构:基于UDT和MQTT的低延迟、高可靠通信
c语言·开发语言·安全·系统架构·机器人
进击的横打5 小时前
【车载开发系列】浮点数与整型数的转换
c语言·车载系统
麦德泽特7 小时前
蓝牙与WiFi之外:为机器人选择合适的近距离无线通信技术
c语言·开发语言·安全·机器人·ssh
我 see your eyes9 小时前
CLA_TASK 任务的理解
c语言·c++·dsp开发
alanesnape10 小时前
Valgrind 测试详解--检测内存泄漏的好工具
c语言·c++·算法
你怎么知道我是队长10 小时前
C语言---排序算法12---计数排序法
c语言·算法·排序算法