C语言struct中的长度可变数组(Flexible array member)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言struct中的长度可变数组(Flexible array member),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含932字,纯文字阅读大概需要2分钟。
内容图文
C_struct中的长度可变数组(Flexible array member)
Flexible array member is a feature introduced in the C99 standard of the C programming language (in particular, in section §6.7.2.1, item 16, page 103). It is a member of a struct, which is an array without a given dimension, and it must be the last member of such a struct, as in the following example:
struct vectord {
uint8_t len;
double arr[]; // the flexible array member must be last
};
-
arr[]
不占用结构体的存储空间,sizeof(strcut vectord)的值为1 - 变长数组必须是结构体的最后一个成员
- 结构体变量相邻的连续存储空间是
arr[]
数组的内容 - gcc中使用0长度的数组
arr[0]
来表示变长数组。
struct vectord *allocate_vectord (size_t len) {
struct vectord *vec = malloc(offsetof(struct vectord, arr) + len * sizeof(vec->arr[0]));
if (!vec) {
perror("malloc vectord failed");
exit(EXIT_FAILURE);
}
vec->len = len;
for (size_t i = 0; i < len; i++)
vec->arr[i] = 0;
return vec;
}
原文:https://www.cnblogs.com/gexin/p/9116292.html
内容总结
以上是互联网集市为您收集整理的C语言struct中的长度可变数组(Flexible array member)全部内容,希望文章能够帮你解决C语言struct中的长度可变数组(Flexible array member)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。