C语言的柔性数组的实现及应用
2024-10-21 03:37:14
c编程的时候数组长度一般都是固定好的,实际上c还能实现变长数组。其实c99中确实是有变长数组的说法,C99中通过允许结构体中的最后一个成员是长度未知的数组实现变长数组,其定义格式如下:
typedef struct _lin
{
int len;
char data[];
}Lin;
有的编译器不接受,可以写成以下方式:
typedef struct _lin
{
int len;
char data[0];
}Lin;
接下来,用sizeof(Lin)测试一下这个结构体的实际大小,结果是4,非常明显data没有占用实际内存,这样我们也成功定义了一个变长数组。怎样使其变长呢?
象其他指针变量一样,具体如下:
Lin *ptrLin = (Lin *)malloc(sizeof(Lin)+size);
size就是数组data的实际长度了,使用完释放内存即可。
free(ptrLin);
这就实现了C语言的柔性数组,应用也很简单,赶紧试试吧。
最新文章
- 微信小程序-上传下载
- android 界面设计基本知识
- 用C#开发的双色球走势图(一)
- Java Web Service 学习
- git学习笔记11-git多人协作-实际多人怎么开发
- 明风:分布式图计算的平台Spark GraphX 在淘宝的实践
- C# 简单的图像边缘提取
- Win8/8.1/10获得完整管理员权限的方法
- c# 中的线程和同步
- Js内存泄露问题总结
- ShareSDK第三方登陆 (IOS)
- Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
- 解决 IIS 反向代理ARR URLREWRITE 设置后,不能跨域跳转 return Redirect 问题
- Chapter5_初始化与清理_成员初始化
- c 中打印格式%g
- strtok strchr strrchr strchrnul
- quartz定时任务及时间设置
- C#使用ActiveMQ实例
- [TJOI2017]DNA --- 后缀数组
- Algorithm——最长公共前缀