问题标签 [flexible-array-member]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 结构中未调整大小的数组声明
为什么C允许这样做:
数组arr
没有指定大小?
c - 错误:灵活数组成员的使用无效
我不知道为什么这段代码会出现这个错误。我应该怎么办?错误如下:
灵活数组成员的使用无效
在这条线上:
如果是更大的代码部分:
c - 灵活数组成员的真正好处是什么?
在阅读了一些与灵活数组成员相关的帖子后,我仍然不完全理解为什么我们需要这样的功能。
(如果我没有从上面可能的重复问题中解决我的问题,请怪我)
以下两种实现之间的真正区别是什么:
我知道 h2 的大小就好像灵活数组成员(数据)被省略了,即sizeof(h2) == sizeof(size_t)
. 而且我也知道灵活的数组成员只能作为结构体的最后一个元素出现,所以原来的实现可以在data
.
我真正的问题是为什么 C99 添加这个功能?仅仅因为 sizeof(h2) 不包含数据的实际大小?我确信我必须错过这个功能的一些更重要的点。请为我指出。
c - char指针与char数组不同?
阅读Redis 的源代码:
我发现char buf[]
不能用 替换char *buf
,因为这char* buf
会增加结构的大小。
但我不明白为什么,有人会对此有所了解吗?
编辑:我已经在我的 x86_64 Ubuntu(3.2.0-23-generic) 上使用 gcc 4.6.3 测试了它,如下所示:
printf("sdshdr len = %zu\n", sizeof(struct sdshdr));
用char buf[]
它输出sdshdr len = 8
和sdshdr len = 16
用char *buf
.
c - 如何按值将数组发送到c中的函数?
我尝试了类似的东西:
但是这个示例代码无法编译。如何按值(不是引用抛出指针)发送数组到函数?
c - 为结构中的灵活数组分配内存
我正在尝试使用 flexarray 为结构分配内存。我以这种方式收到它,我必须像这样实现它。
结构如下:
我有一个启动结构的函数。我有问题的地方就在那里。我真的不知道:我是否必须使用 malloc 为结构分配内存,仅此而已,还是我需要分配内存来*data[]
像指向数组的指针一样?
那么我是否必须编写以下代码?
我希望我的解释足够清楚。如果没有,我可以尝试再次解释。
谢谢!:)
c++ - 在 C++ 中的 struct 定义中使用 struct 本身
我想在 C++ 中实现一个简单的树结构,例如:
但是编译器报错(CLang++和G++都有)
像这样的东西
顺便说一句,我将 -std=c++11 标志用于某些 C++ 11 功能
任何帮助都会得到帮助
c - 动态查找结构的大小
有没有办法在 C 中动态查找结构大小?
Sizeof 是编译时运算符..那么另一个选项是什么。
如果我们可以在结构中动态分配数组(灵活数组),那么动态查找结构大小也应该在那里..请帮帮我...
c - C99:联合内的灵活数组?
我试图将某些东西从使用 struct hack 转换为使用灵活的数组成员,结果却遇到以下错误消息:
错误:使用灵活数组成员的结构无效
(GCC 4.8.1, gnu99, MinGW)
在尝试追查消息的原因后,我将其提炼为以下相对最小的情况:
换句话说,即使联合是结构的最后一个成员,具有灵活数组成员的结构也不能放入结构中的联合内。
(请注意,将灵活的数组成员直接放在联合中似乎确实有效。)
现在:除了恢复到 struct hack(将 c 声明为长度为 1 的数组)之外,还有什么好的方法可以解决这个问题?指向联合内部结构的指针可以工作,但会受到额外的间接层。