柔性数组

本文介绍了柔性数组成员的概念及其使用方法。柔性数组成员是一种特殊的数组成员,其大小可以在运行时动态改变,适用于需要动态长度字符串或其他类型数组的场景。文章通过示例展示了如何利用柔性数组成员实现动态内存分配。
摘要由CSDN通过智能技术生成
概念
  • 柔性数组成员(flexible array member)也叫伸缩性数组成员,这种代码结构产生于对动态结构体的需求。在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间。
#include <iostream>
using namespace std;
struct Test{
        int a;
        char c[0];
};
int main(){
        Test  *p = (Test*)new char[sizeof(Test)+100*sizeof(char)];
        delete [] p;
}
//c被称为柔性数组成员,不占用test的空间,只作为一个符号地址存在。柔性数组成员不仅可以用于字符数组,还可以是元素为其它类型的数组。但结构中的柔性数组成员前面必须至少一个其 他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值