【问题标题】:C pointer structure - buffer points to another structure. How to in C#?C 指针结构 - 缓冲区指向另一个结构。如何在 C# 中?
【发布时间】:2013-09-26 14:20:06
【问题描述】:

这是用 C 语言给我的:

CDCAInput := PTCDCAInput(@CDCAr);

我只被告知: 函数使用结构 TCDCAInput 的指针来传递事务所需的附加输入字段。它指向的缓冲区将被填充以响应 CDCAResult 结构。

我认为@CDCAr 是 CDCAResult 结构的一个实例。但不能完全确定整行代码的含义。

对于像我这样不懂 C 的人...我不知道如何用 C# 编写它的等价物。

非常感谢任何帮助。 谢谢

【问题讨论】:

  • 这看起来一点也不像 C,更像是 Pascal。
  • C 中没有 := 运算符,所以这不是 C……除非你使用了一些非常讨厌的宏。
  • 我也没有使用 Pascal 的经验 :) 该函数是用 C 语言编写的,这是提供的唯一代码。所以感谢您的帮助,我猜这就是 Pascal 中的设置方式。是否可以使用 Pascal 中的示例在 C# 中执行上述操作?
  • 所以如果我看看这个。我将假设 PTCDCAInput 是原始 CDCAInput 的基础变量,它可能是结构 CDCAResult。听起来对吗?所以我必须了解如何翻译 Pascal 中的指针,以便我可以在 C# 中做同样的事情。顺便说一句,谢谢您的帮助。

标签: c# c pointers buffer pascal


【解决方案1】:

我不懂 C#,所以我不能完全回答这个问题,但可以解释一些可能有帮助的事情......

Pascal 和 Delphi 中的一个常见约定是命名结构化类型(记录和类)以“T”开头。另一种约定是命名以“P”开头的指针类型。

根据这些约定,可能有一个名为 TCDCAInput 的 Record(如 C 结构)类型,还有一个名为 PTCDCAInput 的类型声明为指向 TCDCAInput 的指针。

@ 是 Pascal 的“地址”运算符,它给出了变量的地址。

Pascal 类型转换的语法如下:TypeName(VariableName)

总的来说,这行:

CDCAInput := PTCDCAInput(@CDCAr);

意思是:将CDCAr变量的地址转换为PTCDCAInput类型,然后将该值赋给CDCAInput变量。

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 2018-04-25
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多