柔性数组是如何实现动态长度且在编程中灵活应用的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1468个文字,预计阅读时间需要6分钟。

@TOC 性能数组也许你从未听说过性能数组(flexible array)这个概念,但它是实际存在的。在C99标准中,结构体中的最后一个元素可以是未指定大小的数组,这种数组就称为性能数组成员。它允许数组的大小在编译时未知,从而提高了内存使用效率。
例如:cstruct example { int a; int b; int flexibleArray[0]; // 性能数组};
@TOC
柔性数组
也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。
例如:
struct
{
int n;
float s;
int arr[];//柔性数组成员//是结构体的成员变量,但是是数组
};
int main()
{
return 0;
}
有些编译器会报错无法编译可以改成:
struct
{
int n;
float s;
int arr[0];//这里做了改动,柔性数组成员
};
int main()
{
return 0;
}
1.1 柔性数组的特点:
- 结构中的柔性数组成员前面必须至少一个其他成员。
- sizeof 返回的结构大小不包括柔性数组的内存。
- 包含
柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大 小,以适应柔性数组的预期大小。
本文共计1468个文字,预计阅读时间需要6分钟。

@TOC 性能数组也许你从未听说过性能数组(flexible array)这个概念,但它是实际存在的。在C99标准中,结构体中的最后一个元素可以是未指定大小的数组,这种数组就称为性能数组成员。它允许数组的大小在编译时未知,从而提高了内存使用效率。
例如:cstruct example { int a; int b; int flexibleArray[0]; // 性能数组};
@TOC
柔性数组
也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。
例如:
struct
{
int n;
float s;
int arr[];//柔性数组成员//是结构体的成员变量,但是是数组
};
int main()
{
return 0;
}
有些编译器会报错无法编译可以改成:
struct
{
int n;
float s;
int arr[0];//这里做了改动,柔性数组成员
};
int main()
{
return 0;
}
1.1 柔性数组的特点:
- 结构中的柔性数组成员前面必须至少一个其他成员。
- sizeof 返回的结构大小不包括柔性数组的内存。
- 包含
柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大 小,以适应柔性数组的预期大小。

