C 零长度数组
来源:互联网 发布:网络剧错爱一生片尾曲 编辑:程序博客网 时间:2024/05/04 19:56
在C语言中,数组大小是固定的,没有变长度的,为了达到获取变量长度的数组,提供了零长度数组这样的方式来实现,如定义一个结构体:
struct Test{int length;char contents[0];};这样,结构体本身长度=sizeof(int),也就是一个整型长度,contents是不占空间的,然后在程序调用中,可以采用如下:
struct Test *t = (struct Test*) malloc(sizeof(struct Test) + 10);t->length = 10;那么这个时候,t所占的空间就是sizeof(struct Test) + 10,多出来的空间正好可以有t->contents来指向,并且该数组的长度就是t->length,这样就可以获取到动态数组;
但是这样做也有缺点,那就是零长度数组可以用于堆空间,但是不能够用于栈空间,即如果是 struct Test test; 这样定义,那么test的长度就是确定,而contents也没法由程序主动分配而获得额外的空间,即在这个时候,test的长度仅仅就是 sizeof(struct Test),也即是 sizeof(int)的大小。
- C 零长度数组
- GNU/C 零长度数组
- C语言零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- GUN C中零长度数组
- GNU C中的零长度数组
- GNU C中的零长度数组
- C语言中的零长度数组使用说明
- GNU C中的零长度数组
- 使用零长度数组
- 使用零长度数组
- 关于零长度数组
- 【SQL】MySQL性能优化
- Emacs 24.3 在Ubuntu 12.04LTS
- cocos2d-x for android 环境搭建&交叉编译
- C++四种强制类型转换详解
- 2013年08月威海之旅
- C 零长度数组
- 养花哲学
- HDU 1195 Open the Lock
- 配置ssh使用密钥登录,禁止口令登录
- 利用ssh传输文件
- C++ 引用的作用和用法
- Ubuntu创建快捷方式
- 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统
- [译]儿时梦想成真: Spine背后的故事