谈一谈柔性数组

2023-12-13 04:48:45

什么是柔性数组

柔性数组是一种动态可变的数组,也许你从来没有听说过这个概念,但是它确实是存在的,是在C99标准底下支持的一种语法。想要使用柔性数组需要满足3个条件:

柔性数组只能存在于结构体内,且必须是结构体最后一个成员 柔性数组成员前,至少存在一个其他成员
数组的大小未定义

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

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

这两个都是柔性数组

柔性数组有什么用

结构体中的数组并没有占用内存,这就是从0开始,却可以拓展的柔性数组这一不占用内存的特性,可以构造出内存缓冲区,同时由于是使用多少就申请多少,也起到了减少内存碎片化的作用,柔性数组并不是标识结构体结束,而是作为结构体的一种拓展。
同时也可以理解为柔性数组为结构体的一个偏移地址,这使得结构体的大小可以进行动态的变化。

像下面这样的与柔性数组有什么区别
typedef struct{
int stuID;
int age;
char *pAddress;
}ST_STU_INFO;

首先柔性数组不占用内存,而指针则不然,此外柔性数组在使用上是直接访问,形式上更加直观,而指针需要经过声明再进行动态分配内存,在效率上和柔性数组相比也稍微低一些,

文章来源:https://blog.csdn.net/m0_63135219/article/details/134812418
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。