fn main() {
let val = 0;
unsafe { foo(&val) }
}
extern "C" {
pub fn foo(val: *const u32);
}
Run Code Online (Sandbox Code Playgroud)
在C中实施:
void foo(unsigned* val) { *val=1; }
Run Code Online (Sandbox Code Playgroud)
当然,我应该通过val: *mut u32,但是在我传递不可变引用的情况下会发生什么?什么编译器规则适用?是否val保持不变,即使我一个指针传递给本地变量?