/*
Rust 全局变量(static):
1.定义如下 static NUM: i32 = 100;
2.全局变量和常量类似,但是一个重要的区别就是,全局变量不会被内联,在整个程序中,全局变量只有一个实例,也就是说所有的引用都会指向一个相同的地址。
3.定义全局变量使用关键字static,而定义常量使用const,定义普通变量使用let
4.和常量不同,全局变量可以定义为可变的(mut)
5.因为全局变量可变,就会出现被多个线程同时访问的情况,因而引发内存不安全的问题,
所以对于全局可变(static mut)变量的访问和修改代码就必须在unsafe块中进行定义,比如这样:
unsafe {
NUM += 1;
println!("NUM: {}", NUM);
}
6.存储在全局(static)变量中的值必须是Sync,也就是需要实现Sync trait.
7.和常量相同,在定义全局变量的时候必须进行赋值,且赋值必须是在编译期就可以计算出的值(常量表达式/数学表达式),不能是运行时才能计算出的值(如函数)
8.通常来讲,如果需要在两者之间进行选择,那就选择常量(const),使用全局变量始终在内存中占据一小块地方,但是常量则可以运行编译期进行优化(内联),不仅可以优化自己的crate,而且如果有其他人使用你的crate,也可以进行优化。
}
*/
fn main() {
static NUM:i32 = 100;
unsafe {
println!("Hello, world! --- {}",NUM);
}
}
2.static关键字.rs
猜你喜欢
转载自blog.csdn.net/liujiayu2/article/details/114364591
今日推荐
周排行