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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值