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;
相关推荐
谈笑也风生1 分钟前
经典算法题型之复数乘法(二)
开发语言·python·算法
shenghaide_jiahu3 分钟前
数学分析简明教程——总练习题6
学习
智算菩萨5 分钟前
强化学习从单代理到多代理系统的理论与算法架构综述
人工智能·算法·强化学习
lhn5 分钟前
大模型强化学习总结
算法
石像鬼₧魂石20 分钟前
HexStrike AI 理想操作流程清单(完整功能版)
linux·人工智能·windows·学习·ubuntu
Gigavision20 分钟前
MMPD数据集 最新Mamba算法 源码+数据集 下载方式
算法
Xの哲學29 分钟前
Linux UPnP技术深度解析: 从设计哲学到实现细节
linux·服务器·网络·算法·边缘计算
歌_顿29 分钟前
GPT 系列学习总结(1-3)
算法
业精于勤的牙32 分钟前
最长特殊序列(三)
算法
柏木乃一32 分钟前
进程(6)进程切换,Linux中的进程组织,Linux进程调度算法
linux·服务器·c++·算法·架构·操作系统