2020-09-25:錆のポイントは構造タイプです、[let p1 = Point {x:25、y:25}; let p2 = p1;] p1とp2は同じオブジェクトですか?

Fu Ge Answer 2020-09-25:#福大建築家デイリーワン質問#

同じオブジェクトではありません。p1とp2は、アドレスではなく、コンテンツを直接保存します。これは、javaの新しいオブジェクトとは異なります。
p1.xとp1のアドレスは同じであり、p1がアドレスではなくコンテンツを格納していることを示しています。
p1.xとp2.xのアドレスが異なり、p1とp2のメモリ空間が異なり、同じオブジェクトではないことを示しています。

何人かの人々はバーを上げて、Rustにオブジェクトがないと言うでしょう。
深く学ばないと必然的に間違いを犯してしまいます。分解、私はまだそれを読んでいません、私は錆が最適化をしたことを除外しません。何かおかしいことがあったら、直接メッセージを残して意見を述べてください。喜んで受け入れます。

テストコードは次のとおりです。

struct Point {
    
    
    x: i64,
    y: i64,
}

fn main() {
    
    
    let p1 = Point {
    
     x: 25, y: 25 };
    println!("p1.x address: {:p}", &(p1.x));
    println!("p1 address: {:p}", &p1);
    println!("p1.x和p1的地址相同,说明p1存的是内容,而不是地址。");
    println!("------------");
    let p2 = p1;
    println!("p2.x address: {:p}", &(p2.x));
    println!("p2 address: {:p}", &p2);
    println!("p1.x和p2.x的地址不同,说明p1和p2的内存空间不一样,不是同一个对象。");
}

コード実行の結果は次のとおりです。
ここに写真の説明を挿入


コメント

おすすめ

転載: blog.csdn.net/weixin_48502062/article/details/108803910