引用和借用 references and borrowing所有權概念將依照官方介紹,分為3個部分說明:
操作格式
宣告example
&t引用(物件不可變)
&vec
&mut t
引用(物件 可變)
&mut vec
*訪問 可變物件的引用
& 似乎類似 c 中的取位址操作,獲得乙個指標《注意!>* 似乎類似 c 中的取位址內容的操作,獲得指標所存位址裡的內容
借用規則
和引用生命週期
。
&t // 引用(不可變) // e.g. &vec
可變引用:
&mutt // 引用( 可變) // e.g. &mut vec
當 2 個或更多個指標同時訪問同一記憶體位置,當它們中至少有 1 個在寫(那1個可變的引用 &mut t
),同時操作在並不是同步的時候存在乙個「資料競爭」。
所以解釋了為什麼下面的**會出錯:
fn main() ", x); // a immutable borrowing try immut borrow
} // a mutable borrowing end here
可變借用 可以在建立乙個 不可變引用 之前離開作用域:
fn main() // a mutable borrowing end here
println!("{}", x); // a immutable borrowing
}
引用必須與它引用的值存活得一樣長。不然會如 c 一樣引起 記憶體洩漏。 rust 語法和語義 02 函式
函式 functions fn func name var1 u32,var2 u32 u32 使用關鍵字fn宣告乙個函式。fn func name 使用逗號,分割引數。且必須為引數宣告型別 type annotations。fn func name var1 u32,var2 i32 rust函式...
rust 語法和語義 01 變數繫結
變數繫結 variable bindings fn foobar scope between keyword mutability patterns type annotations initializing bindings let mut x u32 5 shadowing let x i sh...
C (二)引用和指標
引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。定義的格式是 型別 引用變數名 已定義過得變數名 引用的特點 1 乙個變數可以取多個別名 2 引用必須初始化 3 引用只能在初始化的時候引用一次,不能改變為再引用其他的變數。include using namespace std vo...