C语言 大小为1的数组声明

3htmauhk  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(88)

遍历Zend源代码中的“zval”结构,我看到了以下内容://zend_types.h

struct _zend_string {
   zend_refcounted_h gc;
   zend_ulong        h;                /* hash value */
   size_t            len;
   char              val[1];
};

此结构用于存储字符串,但'char瓦尔[1] '看起来很尴尬如何使用?

dfddblmv

dfddblmv1#

类似这样的东西用于给予在编译时访问长度未知的数组的权限。结构体从malloc获取内存,内存大小大于结构体。所以数组可以用来访问多余的内存。len必须保持在极限范围内。
奇怪的是,它是一个1元素数组,0元素数组在c99中引入可变长度数组(val[])之前很常见。

相关问题