C语言柔性数组

#include <stdio.h>
#include <string.h>  
#define N 4
#define STR "abcd"
 
int main()
{
    struct student
    {   
    
    }stu;
 
    printf("N = %d
", sizeof(N));  
    printf("num 5 memery = %d
", sizeof(5));
    printf("char 'd' = %d
", sizeof('d')); 
    printf("STR = %d
", sizeof(STR));  
    printf("a = %d
",sizeof(stu));  // 在编译器gcc、mingw5下输出0,在vc++6.0中输出1(我使用的mingw5编译器),在vc++6.0中默认结构体最小大小为1字>节(包含空结构体和只含一个char类型的结构体) 
/*
    柔性数组测试 
    可以参考《C语言深度解剖》 
*/
    printf("
柔性数组测试
");
    typedef struct test
    {   
        int i;
        int a[];  // 此数组前必须包含一个其它成员 
    }te;
    printf("sizeof(te) = %d
", sizeof(te));  // int a[] 不是结构体中的成员 
    te *p = (te*)malloc(sizeof(te) + sizeof(int) * 100);  
    p->a[0] = 13; 
    printf("p->a[0] = %d
",p->a[0]);
    printf("sizeof(p) = %d
", sizeof(p));  // 大小仍然为4,因为int a[] 不是结构体中的成员  
    return 0;
}
N = 4
num 5 memery = 4
char 'd' = 4
STR = 5
a = 0

柔性数组测试
sizeof(te) = 4
p->a[0] = 13
sizeof(p) = 8
原文地址:https://www.cnblogs.com/timssd/p/4658718.html