当前位置: 首页 > news >正文

C语言深度剖析

一、关键字

1.1 最快的关键字-register

register 这个关键字请求编译器尽可能将变量存在CPU内部寄存器中,而不是通过内存寻址以提高效率。

注意是:尽可能、而不是绝对

1.1.1 皇帝身边的小太监-寄存器

不知道什么是寄存器,那见过太监没有其实寄存器就是相当于。一个cpu的中转站并没有其他功能。

好,那我们再连线一下我们的cpu cpu不就是皇帝同志吗?大神就相当于我们的内存数据从他这拿出来,那小太监就是我们的寄存器了。数据从内存拿出来要先放到寄存器,然后cpu再从寄存器里读取数据处理,处理完后同样把数据通过寄存器存放到内存里。Cpu不直接和内存打交道,这里要说明的一点是小太监是主动从大臣手里接过奏章,然后主动地交给皇帝同志。但寄存器没有那么自觉,他从不主动干什么事,一个皇帝可能有好几个小太监,那么一个cpu就也有可能有很多起人气。不同的型号的cpu拥有的寄存器的数量不一样。

为啥要这么麻烦啊?原因就是速度吸尘器其实是一块很小的内存空间,只不过其存储速度要比内存快的多。所谓近水楼台先得月嘛,它距离cpu很近,cpu一伸手就拿到数据了,比在那么大的一块内存里去寻找某个地址上的数据是不是快的多了,那有人要问,既然它速度那么快,那我们的内存硬盘都换成计算器得了呗。我要的要说的是:你可真有钱。

总结:寄存器作为CPU的助手,访问速度要比内存快,但是寄存器成本比内存高。

1.1.2 使用register修饰符注意点

虽然计算器的速度非常快,但是使用 register修饰符也有限制的register变量必须能被cpu寄存器所接受的类型意味着register变量必须是一个单个的词。并且其长度应该小于等于整形的长度,而且register变量可能不存放在内存中,所以不能使用取地址符"&"来获取register变量的历史。<

http://www.dtcms.com/a/324736.html

相关文章:

  • 网页五子棋测试
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-关于我们
  • 2025最新免费的大模型和免费的大模型API有哪些?(202508更新)
  • 秋招春招实习百度笔试百度管培生笔试题库百度非技术岗笔试|笔试解析和攻略|题库分享
  • 冒泡排序实现以及优化
  • WebSocket集群方案解析与实现
  • My APK 安卓版:高效管理手机应用的工具软件
  • windows的cmd命令【持续更新】
  • Linux应用软件编程---文件操作1(fopen、fclose、fgetc/fputc、fgets/fputs)
  • 什么是浏览器标识?
  • 【Docker进阶实战】从多容器编排到集群部署
  • TSF应用开发与运维部署
  • 个人笔记Mybatis2
  • 医学统计(现况调查的统计分析策略1)
  • 电脑使用“碎片整理”程序的作用
  • 基于ECharts的智慧社区数据可视化
  • 【npm、yarn、pnpm】特点对比,按需选择
  • Java设计模式之开闭原则介绍与说明
  • 【RocketMQ 生产者和消费者】- ConsumeMessageOrderlyService 顺序消费消息
  • Vue.js设计于实现 - 概览(二)
  • 跑酷小游戏2.0
  • C语言(长期更新)第10讲:操作符详解(二)
  • 麻溜启动Oracle实例demo
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • 基于Spring Boot和WebSocket的实时聊天系统
  • Openlayers基础教程|从前端框架到GIS开发系列课程(21)geojson实现线要素和区要素
  • git merge的原理和过程,merge conflict产生的原因、处理的逻辑
  • 【话题讨论】GPT-5 发布全解读:参数升级、长上下文与多领域能力提升
  • MCP学习与实践
  • ESP32安装于配置