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;
}
相关推荐
SuperByteMaster17 分钟前
低功耗GPIO引脚配置
c语言
phltxy44 分钟前
C 语言自定义类型:结构体、位段、枚举与联合体
c语言·开发语言
大侠归来2 小时前
C语言与C++在基础语法上的区别
java·c语言·c++
cu1433 小时前
细谈GM8229的具体功能与其应用
c语言·c++·人工智能·单片机
大侠归来4 小时前
C语言内存管理:从栈到堆的完整指南
c语言·开发语言·python
cu1434 小时前
细谈GM7123C的具体功能与其应用
c语言·c++·人工智能·嵌入式硬件
Logic1015 小时前
C语言/数据结构位运算题解:异或XOR找出弹子游戏机中数量为奇数的数字——只出现奇数次
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
晓蛋7 小时前
二级C语言成绩查询方法
c语言·计算机等级考试·成绩查询·官网登录·准考证号
光子物联单片机7 小时前
STM32传感器模块编程实践(二十二)DIY智能WIFI视频控制小车
c语言·stm32·单片机·嵌入式硬件·音视频
老王爱玩车8 小时前
深入理解指针5
c语言·开发语言·学习