【学习笔记之我要C】柔性数组

简介: 【学习笔记之我要C】柔性数组

一、柔性数组介绍


  柔性数组是C99语法中的一个概念,他允许结构体中最后一个成员是未知大小的数组,这就被称为柔性数组。

typedef struct st_type {
  int i;
  int a[0];//柔性数组成员
}type_a;
typedef struct st_type {
  int i;
  int a[];//柔性数组成员
}type_a;

因为有部分编译器无法编译第一个形式的柔性数组,我们可以第二形式的样子。


二、柔性数组特点


  1. 结构中的柔性数组成员前面必须至少有一个其他成员;
  2. sizeof返回的含有柔性数组结构的大小是不包含柔型数组内存的;
  3. 包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存需要大于结构的大小来适应柔型数组的预期大小。
typedef struct st_type{
  int i;
  int a[0];//柔性数组成员
}type_a;
  printf("%d\n", sizeof(type_a));//4


三、柔性数组优势


  1. 内存释放方便(正常情况下进行二次的内存分配后,需要就行两次内存释放。柔性数组很好的解决了这个问题);
  2. 利于提高访问速度(柔性数组会使空间连续开辟,能够提高访问速度,减少内存碎片)。
目录
相关文章
|
6月前
|
编译器 C语言
柔性数组理解
柔性数组理解
42 0
|
编译器 C语言 Python
柔性数组
柔性数组
41 0
|
6月前
|
编译器 C语言
C语言中柔性数组的讲解与柔性数组的优势
C语言中柔性数组的讲解与柔性数组的优势
|
编译器 C语言 C++
动态内存分配(3)——柔性数组
动态内存分配(3)——柔性数组
|
6月前
|
编译器
关于柔性数组
关于柔性数组
|
12月前
|
编译器 C语言
认识柔性数组
认识柔性数组
|
6月前
|
编译器 C语言
|
6月前
|
存储 程序员 编译器
动态内存管理+柔性数组+经典笔试题
动态内存管理+柔性数组+经典笔试题
65 0
|
12月前
C进阶-动态内存管理+柔性数组(1)
C进阶-动态内存管理+柔性数组
39 0
|
12月前
|
编译器 C语言 C++
C进阶-动态内存管理+柔性数组(2)
C进阶-动态内存管理+柔性数组
47 0