Rust语言中级教程之指针

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

Rust语言中级教程

一、指针

什么是指针


  • 指针是计算机引用无法立即直接访问的数据的一种方式(类比 书的目录)
  • 数据在物理内存(RAM)中是分散的存储着
  • 地址空间是检索系统
  • 指针就被编码为内存地址,使用 usize 类型的整数表示。

    • 一个地址就会指向地址空间中的某个地方

  • 地址空间的范围是 OS 和 CPU 提供的外观界面

    • 程序只知道有序的字节序列,不会考虑系统中实际 RAM 的数量

名词解释


  • 内存地址(地址),就是指代内存中单个字节的一个数

    • 内存地址是汇编语言提供的抽象

  • 指针(有时扩展称为原始指针),就是指向某种类型的一个内存地址

    • 指针是高级语言提供的抽象

  • 引用,就是指针。如果是动态大小的类型,就是指针和具有额外保证的一个整数

    • 引用是 Rust 提供的抽象

Rust 的引用


  • 引用始终引用的是有效数据
  • 引用与 usize 的倍数对齐
  • 引用可以为动态大小的类型提供上述保障
Rust 的引用 和 指针
  1. static B: [u8; 10] = [99, 97, 114, 114, 121, 116, 111, 119, 101, 108];
  2. static C: [u8; 11] = [116, 104, 97, 110, 107, 115, 102, 105, 115, 104, 0];
  3. fn main() {
  4.     let a = 42;
  5.     let b = &B;
  6.     let c = &C;
  7.     println!("a: {}, b: {:p}, c: {:p}", a, b, c);
  8. }
复制代码
运行
[code]point_demo on  master [?] is
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表