gpt4 book ai didi

rust - 当 x 和 y 是引用时,为什么 `x + y` 和 `*x + *y` 给出相同的结果?

转载 作者:行者123 更新时间:2023-12-03 11:25:56 24 4
gpt4 key购买 nike

<分区>

我必须实现一个将两个数字相加的函数:

fn add(x: &i32, y: &i32) -> i32 {
println!("x is: {}, y is {}", x, y);
println!("*x is: {}, *y is {}", *x, *y);
x + y
}

fn double(x: i32) -> i32 {
add(&x, &x)
}

fn main() {
assert_eq!(double(5), 10);
println!("Success!");
}

输出是:

x is: 5, y is 5
*x is: 5, *y is 5
Success!

根据我的理解,add 函数不应该执行 x+y,因为它们都是地址。只有 *x + *y 应该工作,因为它取消引用地址并提供存储在那里的值。但是,这两个语句产生相同的结果。这是为什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com