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;
}
相关推荐
待什么青丝1 小时前
【TMS570LC4357】之相关驱动开发学习记录1
c语言·arm开发·驱动开发·学习
C_Liu_1 小时前
C语言:数据在内存中的存储
c语言·开发语言
ZZSCH6 小时前
哈工大计统大作业-程序人生
c语言
薛定谔的猫_C8T66 小时前
程序人生-Hello’s P2P
c语言·汇编·程序人生·shell·二进制·计算机系统·hello
God_archer6 小时前
程序人生-hello’s P2P
linux·c语言·汇编·程序人生
西域曼波王6 小时前
哈尔滨工业大学计算机系统大作业程序人生-Hello’s P2P
linux·c语言·编辑器·vim
whoarethenext14 小时前
OpenCV C/C++ 视频播放器 (支持调速和进度控制)
c语言·c++·opencv
范纹杉想快点毕业15 小时前
C++抽象类与多态实战解析
java·c语言·开发语言·c++·python·qt
喝点可乐yy15 小时前
C语言基础(11)【函数1】
c语言·开发语言
王璐WL17 小时前
【C语言入门级教学】assert断⾔和指针的使用
c语言·数据结构·算法