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;
}
相关推荐
会员果汁3 小时前
函数调用和变长参数
c语言
白山编程大哥6 小时前
Lua 中使用 C 语言的用户自定义类型——userdata
c语言·junit·lua
无敌贵点大王6 小时前
RTThread学习记录13——关于要使用一个外设,RTThread与cubemx到底要怎么配合?
c语言·stm32·学习·rtthread
phltxy6 小时前
C 语言动态内存管理:从申请空间到安全释放
c语言·开发语言·ui
上位机妹子7 小时前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
心中有你02147 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
大圣编蚕8 小时前
C语言入门:基本语法汇总
c语言·开发语言
en.en..9 小时前
C语言---宏
c语言·开发语言
白山编程大哥10 小时前
适合初学者练习的 C/C++ 开源项目推荐
c语言·c++·开源
小灰灰搞电子10 小时前
C 语言 <stdlib.h> 头文件详解
c语言·stdlib.h