柔性数组(C语言)

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。
P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。

  

1、柔性数组介绍


  柔性数组是指数组内的的元素个数是未知的,通常出现在C99环境下的结构体当中。
  在 C99 中,结构中的最后⼀个元素是未知⼤⼩的数组,这就叫做『柔性数组』成员。
  形如:
typedef struct st_type
{
	int i;
	int a[];//柔性数组成员
}type_a;




2、柔性数组的特点


  1.结构中的柔性数组成员前⾯必须⾄少⼀个其他成员。
  2.sizeof 返回的这种结构体⼤⼩不包括柔性数组的内存。
  3.包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤⼩,以适应柔性数组的预期⼤⼩。
  例如:
typedef struct st_type
{
	int i;
	int a[0];//柔性数组成员
}type_a;

int main()
{
	int n = 0;
	type_a *p = (type_a*)malloc(sizeof(type_a)+100*sizeof(int));
	             //柔性数组获得了一百个整型变量的空间。
	p->i = 100;
	for(n=0; n<100; n++)
	{
		p->a[n] = n;
	}
	free(p);
	return 0;
}




3、结语


  十分感谢您观看我的原创文章。
  本文主要用于个人学习和知识分享,学习路漫漫,如有错误,感谢指正。
  如需引用,注明地址。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值