rust - 为什么作为函数参数打印时地址两个不同的值相同?

标签 rust

fn main() {
    println!("{:p}", &"aravindh");
    println!("{:p}", &"test");
    address_of(&"aravindh");
    address_of(&"test");
}

fn address_of<A>(a:&A){
    println!("{:p}", &a);
}

输出为:

0x10da08260
0x10da08278
0x7fff52231990
0x7fff52231990

虽然前两个字符串的地址不同,但为什么通过 address_of 函数打印时它们是相同的?

最佳答案

因为您正在打印参数a的地址,而不是它指向的对象的地址。

fn address_of<A>(a: &A){
    println!("{:p}", a);
}

关于rust - 为什么作为函数参数打印时地址两个不同的值相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45892476/

相关文章:

rust - 为什么 Rust 异步 block 不会在其范围末尾删除值?

rust - 有没有办法让 Rust 将指针视为非别名,以便它可以将它们标记为 `noalias` 用于 LLVM 的优化器?

enums - 如何获取枚举中元素(变体)的数量作为常量值?

rust - 有没有办法在rust中修改SystemTime?

build - 如何在 Rust 中获取源代码的哈希值

rust - 从 if 语句内部返回时类型不匹配

rust - 选项、and_then() 和元组

multithreading - 将 Receiver 移动到线程会提示 Sync,但预期会发送

rust - 如何在 Ok 时解包 Result 或在 Err 时从函数返回?

rust - 临时别名可变引用的最佳方法是什么?