[C语言]柔性数组

目录

        1.柔性数组 

        2.柔性数组的特点

         3.柔性数组的使用


 

        1.柔性数组 

                柔性数组存在于结构体中,当结构体最后一个成员元素为一个未知大小的数组,则称其为柔性数组。         

struct s
{
	int a;
	char arr[];//柔性数组
};

        2.柔性数组的特点

                1. 结构中的柔性数组成员前面必须至少一个其他成员
                2.sizeof 返回的这种结构体大小不包括柔性数组的内存
                3.包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小

struct s
{
	int a;
	char arr[];
};
int main()
{
	printf("%d", sizeof(struct s));
	return 0;
}

                                                        打印结果

[C语言]柔性数组_第1张图片

         3.柔性数组的使用

struct s
{
	int a;
	char arr[];
};
int main()
{
	struct s* p = malloc(sizeof(struct s) + 10 * sizeof(int));//开辟空间
	for (int i = 0; i < 10; i++)//赋值给柔性数组成员arr
	{
		p->arr[i] = 'a';
	}
	free(p);//释放空间
	
	return 0;
}

你可能感兴趣的:(记录,柔性数组)