fixablearray-柔性数组

C99规定:

不完整类型是这样一种类型, 它缺乏足够的信息 例如长度去描述一个完整的对象; 它的出现反映出C程序员对精炼代码的极致追求。产生了对动态结构的需求;

C99 使用不完整类型实现柔性数组成员. C99中 结构中的最后一个元素允许是未知大小的数组. 这就是 柔性数组 也叫做 伸缩性数组成员;

但是结构体中的柔性成员前边 必须至少有一个其他成员.

柔性数组成员 只作为一个符号地址存在 , 而且必须是结构体的最后一个成员. sizeof 返回这种结构体的大小不包括柔性数组的内存;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>

typedef struct fixarray{

int size;

int value[]; // 柔性数组;

}fixarray;


// 创建时 最好用malloc 预留足够的大小; 放置内存溢出
fixarray *stpTest = (test *)malloc(sizeof(fixarray)+100*sizeof(int));


int main(void)
{

printf("sizeof(int) = %d\n", sizeof(int)); // 大小为4

printf("sizeof(fixarray) = %d\n", sizeof(fixarray));// 大小为4


return 0;
}
欣赏此文? 求鼓励,求支持!