我需要在 Go 和 Rust 中重写这些 C 声明,以解决我正在处理的一组练习题。我想通了 Go 部分,但我在 Rust 部分遇到了麻烦。在 Rust 中编写这些有任何想法或帮助吗?
- 双*a[n];
- 双 (*b)[n];
- 双 (*c[n])();
- 双 (*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/