Rust之静态变量


Rust中可以用static关键字声明静态变量

static AGE : i32 = 20;


与let语句一样

static语句同样也是一个模式匹配

与let语句不同的是

用static声明的变量


他的生命周期是整个程序

从启动到退出

static变量的生命周期永远是static

它占用的内存空间也不会在执行过程中回收

这也是rust中唯一的声明全局变量的方法


由于rust非常注重内存安全

因此全局变量的使用有许多限制

这些限制都是为了防止程序员写出不安全的代码


全局变量必须在声明的时候马上初始化

全局变量的初始化必须是编译期可确定的常量

不能包括执行期才能确定的表达式、语句和函数调用

带有mut修饰的全局变量

在使用的时候必须使用unsafe关键字


static GLOBAL : i32 = 100;

fn main() {
    println!("{}",GLOBAL);
    // 局部变量声明,可以留待后面初始化,只要保证使用前已经初始化即可
    let x;
    let y = 1_i32;
    x = 2_i32;
    println!("{} {}",x,y);


    // 全局变量必须声明的时候初始化,因为全局变量可以写到函数外面,被任意一个函数使用
    static G1 : i32 = 3;
    println!("{}",G1);


    // 可变全局变量无论读写都必须用unsafe修饰
    static mut G2 : i32 = 4;
    unsafe {
        G2 = 5;
        println!("{}",G2);
    }

    static array : [i32;3] = [1,2,3];    

}

全局变量的内存不是分配在当前函数栈上

函数退出的时候

并不会销毁全局变量占用的内存空间

程序退出才会回收


enjoy

你可能感兴趣的:(小白学Rust,rust,开发语言,后端)