Avatar ·

Rust में एम्परसेंड (&) और तारांकन (*) प्रतीकों का क्या अर्थ है?

सभी को नमस्ते! मैंने अभी Rust सीखना शुरू किया है और दो ऑपरेटरों को समझ नहीं पा रहा हूँ: & (एम्परसेंड) और * (तारांकन)। अन्य भाषाओं में, जैसे C++, मैं इसका आदी हूँ कि & एड्रेस लेना है और * पॉइंटर को डीरेफरेंस करना है। लेकिन Rust में सब कुछ अलग है।

उदाहरण के लिए, मैंने एक सरल प्रोग्राम लिखा है जो एक फंक्शन के माध्यम से वेरिएबल का मान बदलने की कोशिश करता है:

fn main() {
    let x = 42;
    let y = &x;
    println!("{}", y); // काम करता है, लेकिन यहाँ क्या हो रहा है?
    
    let mut z = 10;
    change_value(&z);
    println!("{}", z);
}

fn change_value(val: &i32) {
    *val = 100; // त्रुटि! क्यों?
}

कंपाइलर लाइन *val = 100 पर त्रुटि देता है, कहता है कि val के बारे में कुछ...