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

时间:2017-08-26 06:11:28

标签: 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函数打印时它们是相同的?

1 个答案:

答案 0 :(得分:4)

因为您要打印参数a的地址,而不是它所指向的地址。

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