C语言---柔性数组
来源:互联网 发布:旅行 知乎 编辑:程序博客网 时间:2024/04/30 13:20
柔性数组(Flexible Array)也叫伸缩性数组,其实就是变长数组,反映了C语言对精炼代码的极致追求。这种代码结构产生于对动态结构体的需求。比如我们需要在结构体中存放一个动态长度的字符串,这时候,柔性数组可以大显身手了。
C99使用不完整类型来实现柔性数组,标准形式如下:
struct MyStruct
{
int a;
double b;
char c[]; // or char c[0]; 也可以用其他数据类型;
};
c不占用MyStruct的空间,只是作为一个符号地址存在,而且必须是结构体的最后一个成员。
#include#include #include using namespace std;typedef struct Mystruct{ int a; double b; char c[];}ms, *pms;int main(){ char c1[] = "Short string."; char c2[] = "This is a long string."; pms pms1 = (pms)malloc(sizeof(ms) + strlen(c1) + 1); if(NULL != pms1){ pms1->a = 1; pms1->b = 11; strcpy(pms1->c, c1); } cout << "pms1: " << endl << pms1->a << " " << pms1->b << " " << pms1->c << endl; pms pms2 = (pms)malloc(sizeof(ms) + strlen(c2) + 1); if(NULL != pms2){ pms2->a = 2; pms2->b = 22; strcpy(pms2->c, c2); } cout << "pms2: " << endl << pms2->a << " " << pms2->b << " " << pms2->c << endl; return 0;}
总结:
柔性数组的主要作用为:1.方便管理内存缓冲区 2.减少内存碎片化
阅读全文
0 0
- C语言柔性数组
- C语言柔性数组
- c语言柔性数组
- C语言---柔性数组
- C语言创建柔性数组
- C语言创建柔性数组
- C语言中的柔性数组
- C语言中的柔性数组
- C语言中的柔性数组
- C语言中的柔性数组
- C语言(柔性数组,零长数组)
- 【C语言】变长数组与柔性数组
- C语言的柔性数组运用解析
- C语言中的柔性数组结构
- 深入浅出C语言中的柔性数组
- 深入浅出C语言中的柔性数组
- C语言柔性数组(转)
- C语言变长消息定义:柔性数组
- [lesson4]在IDE编译Nuttx
- 并行无锁数据结构设计
- 内存分配:堆、栈、全局变量/静态变量、代码区
- IE浏览器无法连接网络的解决办法
- VB脚本:SecureCRT中监控断言与异常方法
- C语言---柔性数组
- Github基本操作
- 迷宫路径的求解(非递归方法和递归方法)
- Webpack 3.0.0
- 新书《MyBatis 从入门到精通》
- gcc编译C++程序
- python -- 类处理与模块
- ACdream 1106 游泳水平有限的瑶瑶 (计算几何)(点到直线的最短距离)
- 有关send() / recv()函数的理解