pointers - 解释 Rust 中的 C 声明

标签 pointers rust

我需要在 Go 和 Rust 中重写这些 C 声明,以解决我正在处理的一组练习题。我想通了 Go 部分,但我在 Rust 部分遇到了麻烦。在 Rust 中编写这些有任何想法或帮助吗?

  1. 双*a[n];
  2. 双 (*b)[n];
  3. 双 (*c[n])();
  4. 双 (*d())[n];

最佳答案

假设 n 是一个常量:

let a: [*mut f64, ..n];           // double *a[n];
let b: *mut [f64, ..n];           // double (*b)[n];
let c: [fn() -> f64, ..n];        // double (*c[n])();
fn d() -> *mut [f64, ..n];        // double (*d())[n];

这些在任何语言中都是相当尴尬和不寻常的类型。然而,Rust 的语法使这些声明比 C 的语法更容易阅读。

请注意,C 中的d 是一个函数声明。在 Rust 中,外部函数声明只允许在 extern block 中使用(参见 the FFI guide )。

关于pointers - 解释 Rust 中的 C 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27242122/

相关文章:

C++03 带 free() 的智能指针

c++ - 返回局部变量

c - 为什么我偶尔会在测试 1 和测试 3 的输出中出现乱码?

c++ - Rust 位域和枚举 C++ 风格

rust - 如何确定目标平台而非主机平台在 build.rs 时的 c_uint 大小?

winapi - 如何使用 winapi crate 为 Windows 制作托盘图标?

c - c中带有char指针的二维数组

c - 使用辅助指针操作 C 字符串后出现段错误

string - 交替使用 str 和 String

c - 如何在 C 中动态加载 Rust 库?