我们知道了C语言中有开辟动态内存的函数如malloc、colloc、realloc函数,这三个函数开辟的动态空间的位置都在堆区上。
今天我们要来讨论的是与之相关的一种新的数据定义方式,这种方式叫做柔性数组
顾名思义,柔性数组,与数组相关,但是又区别于数组,下面就是对其使用方式的阐释:
这是结构体S:
这是柔性数组:
区别于数组,我们发现此处“数组”中并未初始化元素的数量,这就是柔性数组的独特的地方
柔性数组的空间开辟方式与结构体类似,对于结构体来说a变量占4个字节,b变量占1个字节,但是由于内存空间存在内存的对齐,所以结构体占8个字节(详细参考以前讲过的结构体的内存分配问题https://blog.51cto.com/u_15923331/9725734)
但是对于柔性数组,arr的内存需要动态内存开辟函数来创建。
下面是柔性数组的使用方式:
首先是柔性数组空间的开辟,我们不仅要将原先的结构体空间开辟出来,即变量a和b的空间,我们同时需要将我