问题标签 [struct]

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.

0 投票
16 回答
91843 浏览

c# - 为什么可变结构是“邪恶的”?

在关于 SO 的讨论之后,我已经多次阅读了可变结构是“邪恶”的评论(就像在这个问题的答案中一样)。

C# 中的可变性和结构的实际问题是什么?

0 投票
4 回答
2843 浏览

c - C99 中的 struct 与 ANSI-C 有什么区别?

此代码在 ANSI-C 中似乎不正确,但在 C99 中可以:

C99 和 ANSI-C 中的 struct 有什么区别?

编辑:我忘记了“a”,我的错。此代码在 C99 模式下使用 gcc 编译正常,但在 splint 上出现解析错误,已知它不支持所有 C99 扩展。

Edit2:这是 splint 的输出:

Edit3:这个文件是 eCos fileio.h(这个片段的最后一行是第 152 行):

0 投票
7 回答
34530 浏览

c - 试图将结构成员复制到c中的字节数组

我试图将包含整数、字符和字符数组的结构的成员复制到字节数组中以发送到串行线路。到目前为止我有

当我获得此代码时,我并不完全理解它是如何工作的。我可以看到 memcpy 获取结构的每个元素并将其转换为由“i”变量索引的串行流,但我不知道 USARTWrite 函数如何将其打包成字符串,或者如何加载数组我的结构初始化。

抱歉,这篇文章有点长,但我刚刚开始这个编程云雀,并试图理解这个概念。

谢谢戴夫

编辑:

哇,很快就有很多好的答案 - 谢谢大家。

slaz:这对我来说似乎是合乎逻辑的,我还没有真正考虑过这种方法,因为我还没有真正理解指针,但是我开始看到它们是 C 的重要组成部分,所以我会适时拥有看看。

  • 这行代码将数据发送到我的 UART,我将用什么替换包含消息内容的数组?似乎我在这里错过了一个逻辑步骤,我有一个变量告诉我我的结构从哪里开始以及它有多大,但没有要发送的数组

    /li>

哈珀谢尔比:谢谢你的描述,这让我更清楚了。

rgds

戴夫

0 投票
13 回答
21975 浏览

c++ - C++ 成员变量别名?

我很确定这是可能的,因为我很确定我已经看到它完成了。我认为这很棒,但我很乐意接受“这是一个糟糕的想法,因为____”这样的答案。

假设我们有一个基本结构。

现在,我想在这些变量上实现别名。

理想情况下,第三种语法与数组无法区分。也就是说,如果我将arr作为参考参数发送给一个函数,该函数需要一个浮点数组来存储数据(例如许多 OpenGLglGet函数),它会正常工作。

你怎么看?可能的?可能但愚蠢?

0 投票
9 回答
226737 浏览

javascript - Javascript中的结构

以前,当我需要存储许多相关变量时,我会创建一个类。

但我想知道这是否是一个好习惯。还有其他更好的方法来模拟 JavaScript 中的结构吗?

0 投票
1 回答
3587 浏览

c# - 如何在 C# 中编组打包结构的非托管缓冲区

我(成功)使用以下 pinvoke 签名在 c# 中调用 Windows FilterSendMessage 函数:

outBuffer参数填充了任意数量的结构(一个接一个地打包),在 C 中定义为:

名称字段被分配了一个可变长度、以空字符结尾的 unicode 字符串。len字段以字节为单位描述结构的总大小(包括名称字符串)。我相信在非托管方面如何处理结构没有任何问题。

当我尝试将 outBuffer 编组到 C# 中定义为 BAH_RECORD 结构的实例时,我的问题出现了:

如果我尝试打印/查看/显示 bah.name,我会得到垃圾......

为了确认 outBuffer 确实包含有效数据,我在 c# 中做了一些粗略的指针骇客来逐步处理它,调用 Marshal.ReadInt32 两次(以覆盖前 2 个结构字段),然后调用 Marshal.ReadByte 几次以填充一个字节[] 然后我将其用作 Encoding.Unicode.GetString() 的参数......字符串出来很好,所以它肯定在那里,我似乎无法让编组器正确处理它(如果它甚至能够?)

任何帮助表示赞赏

史蒂夫

0 投票
7 回答
81183 浏览

c - C:指向结构定义中的结构的指针

我怎样才能在这个结构的定义中有一个指向下一个结构的指针:

这是我第一次写它的方式,但它不起作用。

0 投票
6 回答
7761 浏览

c++ - 将字节数组反序列化为结构

我通过网络获得了一个字符/字节数组的传输。它包含一个标题和一些数据。我想将标题映射到结构上。这是一个例子:

假设结构从不包含任何可变长度字段,这是否总是有效?是否有独立于平台/惯用的方式来做到这一点?

笔记:

我在互联网上看到了很多可以让你序列化/反序列化的库,但我的印象是,它们只能反序列化之前已经用同一个库序列化的东西。好吧,我无法控制传输的格式。我肯定会得到一个字节/字符数组,其中所有值都相互跟随。

0 投票
30 回答
317000 浏览

c# - 什么时候应该在 C# 中使用结构而不是类?

什么时候应该在 C# 中使用 struct 而不是 class?我的概念模型是当项目仅仅是值类型的集合时使用结构。一种在逻辑上将它们组合成一个有凝聚力的整体的方法。

我在这里遇到了这些规则:

  • 一个结构应该代表一个单一的值。
  • 结构的内存占用应小于 16 字节。
  • 创建后不应更改结构。

这些规则有效吗?结构在语义上意味着什么?

0 投票
2 回答
3943 浏览

c# - 如何在结构构造函数中设置自动属性支持字段的值?

给定这样的结构:

当然,会生成一个编译器错误,读取The 'this' object cannot be used before its all fields are assigned to

有没有办法为支持字段或属性本身分配值,或者我是否必须使用我自己的显式支持字段以老式方式实现属性?