rust学习笔记3-基础语法

发布于:2025-02-20 ⋅ 阅读:(135) ⋅ 点赞:(0)

1.基础语法变量声明及特点

fn main() {
    //声明变量需要加关键字这点与js相似
    let x = 1; //类型可以自动推导,当然也可以指定
    println!("x : {x}");
    //如果没有加关键字mut默认是不可变的,这点与java\python\go等主流语言有很大不同
    //x = 5; //这样非法直接报错
    //如果想改变值声明需要加关键字mut
    let mut y: i32 = 10;
    println!("y : {y}");
    y = 15;
    println!("y : {y}");
    //rust支持在不同空间使用相同名字变量命名,或者类型、可变现性不同也可以
    {
        //内部
        let x = 5;
        println!("x : {x}");
    }  //出来x就被销毁了
    //改变x为可变变量可以修改值
    let mut x = 22;
    x = 29;
    println!("x : {x}");
    //相同的x但类型不同也可以重复声明
    let x = "test";
    println!("x : {x}");
}

运行结果

2.常量与不可变变量的区别

既然不可变变量是不可变的,那不就是常量吗?为什么叫变量?

变量和常量还是有区别的。在 Rust 中,以下程序是合法的:

但是如果 a 是常量就不合法:

3.const 常量与static静态变量区别


const 常量
常量的值通常是在编译时已知的常量表达式,通常必须指定类型与值
与 C语言的宏定义(宏替换)不同,Rust的const 常量的值被直接嵌入到生成的底层机器代码中,
而不是进行简单的字符替换
常量名与静态变量命名通常全部大写,单词之间加入下划线
常量的作用域是块级作用域,它们只在声明它们的作用域内可见

static静态变量
1.与 const 常量不同,static 变量是在运行时分配内存的
2.并不是不可变的,可以使用unsafe修改
3.静态变量的生命周期为整个程序的运行时间

代码演示

static A_STATIC: i32 = 50;
static mut A_MUT_STATIC: i32 = 20;

fn main(){

    const a:i32 = 30;
    const b:i32 = 2 * a;//编译是确定类型
    println!("a:{a}");
    println!("b:{b}");
    println!("A_STATIC:{A_STATIC}");
    unsafe {
        A_MUT_STATIC = 100;
        println!("A_MUT_STATIC:{A_MUT_STATIC}");
    }
   
}

运行结果

4.函数声明

Rust 函数通过 fn 关键字定义,函数的返回类型通过箭头符号 -> 指定。

fn add(a: i32, b: i32) -> i32 {
    return a + b;
}

fn main(){
    let mut c= 0;
    c = add(5, 8);
    println!("c:{c}");
   
}

运行结果


网站公告

今日签到

点亮在社区的每一天
去签到