C语言中的变长数组 data[0]
来源:互联网 发布:js 二进制转字符串 编辑:程序博客网 时间:2024/06/05 18:48
本文装载自:http://www.cnblogs.com/Anker/p/3744127.html
主要是在看leveldb源码时, SkipList::Node里面的port::AtomicPointer next_[1]定义有点不解,因此上网搜到下面这篇讲解,做个笔记。
前言
今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可能为0呢?于是上网搜了一下这样的用法,发现在linux内核中,结构体中经常用到data[0]。这样设计的目的是让数组长度可变,根据需要分配。方便操作,节省空间。
data[0]结构
经常遇到的结构形式如下
struct buffer{ int data_len; //长度 char data[0]; //起始地址};
在这个结构中,data是一个数组名;但是该数组并没有元素;该数组的真是地址紧随结构体buffer之后,而这个地址就是结构体后面数据的地址、如果给这个结构体分配的内容大于这个结构体的实际大小,后面的部分就是这个data的内容。这种声明方法可以巧妙地实现C语言里的数组拓展。
0 0
- C语言中的变长数组 data[0]
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]【总结】
- C语言变长数组data[0]的用法
- 变长数组data[0]
- C语言变长数组
- C语言变长数组
- c语言变长数组
- C语言变长数组
- C语言变长数组
- Java: 用Map 和 多态 替换臃肿的if-else结构--section 2
- Java排序算法之选择排序
- UCOS-II学习记录
- Retrofit-Android上的token验证
- TensorBoard学习
- C语言中的变长数组 data[0]
- 第12节 C语言三大结构之循环结构
- 树莓派pi3 ssh远程连接问题
- 一些常用的图像处理网站
- cesium模拟水系效果
- sbt安装
- 神注释大全
- 卷积码编码和BCJR译码
- wpf真正的窗口移动动画