【学习笔记之我要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语言
柔性数组理解
柔性数组理解
43 0
|
编译器 C语言 Python
柔性数组
柔性数组
43 0
|
6月前
|
编译器 C语言
C语言中柔性数组的讲解与柔性数组的优势
C语言中柔性数组的讲解与柔性数组的优势
|
6月前
|
编译器
关于柔性数组
关于柔性数组
|
编译器 C语言
认识柔性数组
认识柔性数组
|
6月前
|
编译器 C语言
|
11月前
|
程序员 编译器 C语言
C语言动态内存管理以及柔性数组
C语言动态内存管理以及柔性数组
86 0
C进阶-动态内存管理+柔性数组(1)
C进阶-动态内存管理+柔性数组
39 0
|
编译器 C语言 C++
C进阶-动态内存管理+柔性数组(2)
C进阶-动态内存管理+柔性数组
48 0
|
编译器 C语言
带你认识柔性数组
小编今天又给大家带来新东西了,相信柔性数组这个名词对于大部分人都比较陌生,那接下来就让我们去认识认识这个新朋友
76 0