rust持续学习 raw pointer 1

c里头

c 复制代码
float a = 1;
float* p = &a;
是可以直接
int * p1 = (int*)p;
来强转类型做一些事情的

经过了解

rust里是这么操作的

rust 复制代码
 unsafe {
    std::mem::transmute::<origin_type, target_type>(raw_bytes)
};

比如上面是四个u8,可以拼一个u32

然后是函数指针这个东西

rust 复制代码
fn foo()->i32这样的函数,要先foo as *const()转换为裸指针raw_ptr
unsafe肯定的,然后let target_fn = std::mem::transmute::<*const (), fn() -> i32>(raw_ptr);

文档说这个做法不是每个机器都能移植

emmm所以知道能这样写就行,尽量别这样写

oh 对了,指针的获得方式就是let p = &some_value as const or mut type
就是原本是mut就改成
mut,原本是immutable就改成
const

example

rust 复制代码
let a= 5;
let p = &a as *const i32;
let mut a = 5;
let p = &mut a as *mut i32;
相关推荐
扶苏xw6 分钟前
【分组背包】
算法·动态规划
李兆龙的博客11 分钟前
从一到无穷大 #68 Agent Memory 全景:大模型智能体记忆机制的形态、动态与前沿
大数据·人工智能·算法
Binarydog_Lee18 分钟前
Rust 生命周期机制详解:彻底理解 ‘static
rust
cwplh34 分钟前
平衡树学习笔记
数据结构·笔记·学习·算法
爱写代码的小朋友35 分钟前
生成式人工智能(AIGC)在中小学生探究式学习中的应用边界与伦理思考
人工智能·学习·aigc
wen__xvn42 分钟前
天梯赛L2刷题(也就写写水题骗骗自己了)
算法
techdashen43 分钟前
Rust 正式成立 Types Team:类型系统终于有了专属团队
开发语言·后端·rust
EllinY1 小时前
扩展欧几里得算法 exgcd 详解
c++·笔记·数学·算法·exgcd
jiayong231 小时前
第 17 课:任务选择与批量操作
开发语言·前端·javascript·vue.js·学习
AI科技星1 小时前
三维网格—素数对偶性及其严格证明(全域数学·统一基态演化版)
算法·数学建模·数据挖掘