问题标签 [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.
c++ - 取消引用结构中的可变大小数组
结构似乎是解析二进制数据块(即文件或网络数据包)的有用方法。在 blob 中有可变大小的数组之前,这很好而且很花哨。例如:
这使我可以找到最后一个数据字符:
问题是,我想要多个可变长度数组:
我不是手动分配这些结构。我有一个像这样的文件:
当我试图解析一个二进制文件(更具体地说是一个类文件)时。我已经用 Java 编写了一个实现(这是我的课堂作业),不,我正在用 C++ 编写个人版本,并希望无需编写 100 行代码就能摆脱困境。有任何想法吗?
谢谢,斯特凡
c# - 将 C++ 结构数组编组为 C#
我在 C++ 中有以下结构:
以及我正在调用/调用的函数以获取其中 3 个结构的数组:
在 C++ 中,我会做这样的事情:
它会工作得很好,但在 C# 中我似乎无法让它工作。我创建了一个这样的 C# 结构:
如果我初始化其中 3 个数组(以及它们的所有子数组)并将其传递给它:
它返回成功,但 LPRData 数组中的数据没有改变。
我什至尝试创建一个大小为 3 个 LPRData 的原始字节数组,并将其传递给这样的函数原型:
获取数据(字节 [] 数据);
但在这种情况下,我将从第一个 LPRData 结构中获取“数据”字符串,但之后没有任何内容,包括来自同一 LPRData 的“prob”数组。
关于如何正确处理这个问题的任何想法?
c - C中的N叉树
哪一个是 C 语言中 N-ary 树的简洁实现?
特别是,我想实现一个 n-ary 树,而不是自平衡树,每个节点中的子节点数量不限,其中每个节点都包含一个已经定义的结构,例如:
c - 如何初始化指向结构的指针数组?
是否可以初始化指向结构的指针数组?就像是:
我想这样做是为了将实体放在不连续的内存中,并将指向它们的指针放在连续的内存中......但我不能使用动态内存,所以我想知道没有它是否可行。
c# - C#:这是如何工作的:Unit myUnit = 5;
我刚刚注意到您可以在 C# 中执行此操作:
而不必这样做:
有谁知道我如何用自己的结构来实现这一点?我查看了带有反射器的 Unit 结构并注意到正在使用 TypeConverter 属性,但是在为我的结构创建自定义 TypeConverter 之后,我仍然无法让编译器允许这种方便的语法。
c# - 从 C# 访问 Win32 C/C++ 结构成员
我正在使用某种挂钩从 C# 拦截 Win32 API 调用本机 dll 或 exe。在这种特殊情况下,我对 user32.dll 中的 DrawText() 感兴趣。在 Win32 API 中是这样声明的:
LPRECT 结构具有以下签名(也在 Win32 API 中):
LONG 是 32 位系统上 32 位整数的 typedef(不了解 64 位系统,此时无关紧要,因为我在 32 位 Windows 上)。为了能够访问这个结构的成员,我在我的 C# 代码中声明了它......
...并使用此 RECT 结构编写了 P/Invoke 的签名:
由于结构是 C# 中的值类型,而不是 C/C++ 中的引用类型,因此此处需要 ref 修饰符。
但是,当我使用rect.top rect.left
etc 时,它们几乎总是返回 0。我知道这是不正确的事实。但是在谷歌搜索了无数小时并尝试了很多不同的东西之后,我无法让这个简单的东西发挥作用。
我尝试过的事情:
- 对 RECT 成员使用不同的原语(int、long、short、UInt32...)。实际上很明显这不是类型问题,因为无论如何我应该看到一些乱码,而不是 0。
- 删除 ref 修饰符。这也是愚蠢的(绝望的时候,绝望的措施),因为 rect.left 正确地返回指向 rect 的指针而不是它的值。
- 尝试过
unsafe
的代码块。没用,但我可能在实现中犯了一个错误(我不记得我做了什么)。除了这种方法通常保留用于 COM 和 Win32 中棘手的指针情况,无论如何,这对我的情况来说是多余的。 - 尝试
[MarshallAs]
在 RECT 成员之前添加。没区别。 - 玩弄
Pack
价值观。没有不同。
我相当确定我错过了一些非常简单直接的东西,但我不知道它是什么......
任何帮助表示赞赏。谢谢你。
c - 为什么我们不能在结构中初始化成员?
为什么我们不能在结构中初始化成员?
例子:
c++ - C ++:结构的ctors?
C ++:由于结构是具有“公共”所有内容的类,因此是否创建并调用了默认-ctors?
我问的原因是要了解使用结构时 C++ 可能比 C 产生的开销(如果有的话)。我听到的一个观点是,在 C++ 中,类有一些结构没有的开销,但我对此表示怀疑。
c - 为什么我们要在 C 中如此频繁地对结构进行 typedef 呢?
我见过许多由如下结构组成的程序
为什么经常需要它?有什么具体原因或适用范围吗?
c - 将结构的指针/引用传递给函数
这听起来像是一个愚蠢的问题,但我还在学习 C,所以请多多包涵。:)
我正在编写 K&R(结构)的第 6 章,到目前为止,这本书已经取得了巨大的成功。我决定大量使用结构,因此在本章的开头用 point 和 rect 示例做了很多工作。我想尝试的一件事是canonrect
通过指针更改函数(第 2 版,第 131 页)工作,因此返回void
。
我有这个工作,但遇到了一个小问题,我希望你们能帮助我。我想canonRect
创建一个临时矩形对象,执行它的更改,然后将它传递给临时矩形的指针重新分配,从而简化代码。
但是,如果我这样做,矩形不会改变。相反,我发现自己手动重新填充了我传入的矩形字段,这确实有效。
代码如下:
所以这里有问题:
- 为什么不
r = &temp;
工作?(我认为这是因为我传入了引用而不是指针;我认为引用不可修改但指针是正确的吗?) - 如果我尝试传递指向 的指针,为什么会出现非法间接编译时错误
canonRect
?(即,如果我有的话canonRect(*r);
。main()
)
我怀疑我已经知道#1 的答案,但#2 让我感到困惑——我认为传递指针是合法的。
无论如何...请原谅C新手。