struct的分析
思考
空结构体占用多大内存?
struct D
{
};
int main()
{
struct D d1;
struct D d2;
printf("%d\n",sizeof(struct D)); //0
printf("%d,%p\n",sizeof(d1),&d1); //0,一个地址
printf("%d,%p\n",sizeof(d2),&d2); //0,地址跟d1一样
return 0;
}
所以 空结构体不占有内存;
由结构体产生柔性数组
- 柔性数组即数组大小待定的数组
- C语言中结构体的最后一个元素可以是大小未知的数组
- C语言中可以由结构体产生柔性数组
struct SofArray
{
int len;
int array[];
};
柔性数组使用分析
#include<stdio.h>
#include<malloc.h>
typedef struct soft_array
{
int len;
int array[];
}SoftArray;
int main()
{
int i = 0;
SoftArray* sa =