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语言的柔性数组,应用也很简单,赶紧试试吧。

最新文章

  1. 微信小程序-上传下载
  2. android 界面设计基本知识
  3. 用C#开发的双色球走势图(一)
  4. Java Web Service 学习
  5. git学习笔记11-git多人协作-实际多人怎么开发
  6. 明风:分布式图计算的平台Spark GraphX 在淘宝的实践
  7. C# 简单的图像边缘提取
  8. Win8/8.1/10获得完整管理员权限的方法
  9. c# 中的线程和同步
  10. Js内存泄露问题总结
  11. ShareSDK第三方登陆 (IOS)
  12. Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
  13. 解决 IIS 反向代理ARR URLREWRITE 设置后,不能跨域跳转 return Redirect 问题
  14. Chapter5_初始化与清理_成员初始化
  15. c 中打印格式%g
  16. strtok strchr strrchr strchrnul
  17. quartz定时任务及时间设置
  18. C#使用ActiveMQ实例
  19. [TJOI2017]DNA --- 后缀数组
  20. Algorithm——最长公共前缀

热门文章

  1. Throw 和Throws 的区别
  2. 动画处理<并行和串行>
  3. Vue2.0的核心思想
  4. DML 操作表中数据
  5. Java新功能之方法引用
  6. CPNtools 模拟工具适合分析什么样的协议
  7. simpleDateFormat中格式化时间需要注意的问题
  8. yum源仓库的三种搭建方式
  9. Replica set 的选举策略之一 (转)
  10. visual studio故障修复