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;
相关推荐
迷藏49422 分钟前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
lvxiangyu111 小时前
MPPI 算法证明重构:基于无穷维泛函变分与 KL 散度的构造性推导
算法·重构·最优控制·随机最优控制
2301_818419011 小时前
C++中的解释器模式变体
开发语言·c++·算法
ab1515171 小时前
3.25完成*23、*24、*28、*30、*33、*38、*39、*40
算法
red_redemption1 小时前
自由学习记录(143)
学习
颜酱1 小时前
回溯算法实战练习(3)
javascript·后端·算法
楼田莉子2 小时前
MySQL数据库:MySQL的数据类型
数据库·学习·mysql
小陈phd2 小时前
系统架构师学习笔记(三)——计算机体系结构之存储系统
笔记·学习·系统架构
小王不爱笑1323 小时前
G1 GC 的核心基础:Region 模型的补充细节
java·jvm·算法
小王不爱笑1323 小时前
三色标记算法
算法