首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
version
byte
metadata
shell
main
php5
netty
email
hashtable
ip
client
post
flutter
c语言
list
erlang
header
dagger
bitmap
typescript
java
timezone
testing
require
schema
future
substring
integer
buffer
audio
php8
dll
tags
stream
const
express
loops
python3
hook
plugins
node.js
sum
golang
solr
web3
emoji
command
hashcode
keyword
filter
cSharp
format
scala
subset
char
select
split
httprequest
perl
heap
nodejs
fetch
export
default
grid
tree
foreach
utf-8
int
httpclient
php
copy
jar
object
io
cmd
actionscrip
lua
js
当前位置:
开发笔记
>
编程语言
> 正文
第10章指针基础:深入解析内存地址单元
作者:Victoria625_176 | 来源:互联网 | 2024-10-29 13:37
本章深入探讨了指针的基础概念,详细解析了内存地址单元的运作机制。通过实例分析,读者将全面理解指针在内存管理中的关键作用及其应用技巧。
声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:
80368704@qq.com
QQ:80368704
10.1 内存单元地址
我们每个人,在不断的成长,无论何时,都在不断的学习着,通过书本,通过师傅,通过失败,我们不断的总结着,不断的整理着自己的知识,使其系统化,理论化,以便能解决更多复杂的问题。但是具有这样条理清晰,结构完整的学识,我们经过了若干年,学习了若干代人的经验,经过了若干次的实践,一切的一切都是那么来之不易。从最初的一点点皮毛接触(感性认识),到完备知识体系的建立(理性认识),我们再把这些知识传授给其他人,哪里是一天两天可以教会他们的呀。指针是C语言博大精深之处,认识它,其实是在进军操作系统核心部分;指针是C之所以被称为中级语言的重要原因之一,它继承了汇编语言的内存单元的直接和间接访问的手段,使我们用高级语言编写的程序的效率大幅提高。指针的用途和优点是多多的,但是指针对不熟悉系统工作原理,尤其是对存储器原理不清楚的人,是不容易掌握的,因此我们对指针的讲解从内存的工作原理讲起。
在我们的计算机中,主要的内存叫做RAM(Random Access Memory),即随机存取存储器,在计算机的基础课中我们就了解到,RAM的主要作用是存储程序代码和数据供CPU在需要的时候调用。RAM对于系统性能的影响是每个PC用户都非常清楚的,那么它是如何实现程序和数据的存取的呢?
程序和数据的存取,并不是像堆放山药蛋那样简单,而是更像是超市存包处用箱格子存放物品一样,不但要放进去,还要能在需要的时候准确的取出来。
1 2 3 4 5 6 7 。。。。。。。。。。。。。。。。。。。。。。。。。。。9999
▼▼▼▼▼▼▼ ▼
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
上面的示意图中的小园点代表RAM中的储物箱,每一个圆点是一个小箱,,每个小箱有一个唯一的编号。计算机术语把一个小箱子称为一个字节.RAM就是由许多字节组成的,如上图中小圆点组成的细线。这里每个字节的编号是数字的,编号从0开始,即第一个字节的编号是0,依次第2个字节的编号是1,其后是2,3,4,5,6.............直到最后一个字节,当整个内存共有100个字节,最后一个字节的编号就是99;而当我们的内存共有10000个字节时,最后一个字节的编号就是9999了。一般的,我们称这个编号为该字节的地址编号,简称地址。
上面的内容,貌似原理,你仔细看看,其实很简单的哩,
你把CPU和RAM当作两个人
,CPU是存取包裹的人,RAM是存包处的管理员!具体举例:设包裹名为50,箱格子的号是2000,如下:
如果CPU要想从RAM那里取(包),而且现在包被存在(箱号)为2000的(箱)中,这时CPU首先需要向RAM提供(箱号)即2000,以便RAM定位待取的(包)50,然后等待若干个时间单位之后,RAM就会根据(箱号)2000定位到(包)50,并把(包)50交给CPU。我们现实生活中的超市存包处,一个箱格子是只放一个包的,哈,于是取包的过程可以用下图表示:
地址 2000▼
RAM
CPU
= = =.......= = = = = = = = = = = =........ = = = = = = = =
|| || <←←<←←2000 || ||
||........................50................................|| || ||
|| || 50 >→→>→→ > || ||
= = =.......= = = = = = = = = = = =........ = = = = = = = =
超市存包处被划分为许多格子,每个格为最小的单位,一个格存一个包,如果你一个人有3个包,那么就给你3个格子哦;我们把一个格子称为一个
存包单元
。
回到计算机中,如果CPU想要从RAM中调用的(数据),存放在(地址编号)为2000的(字节)中,这时CPU它首先需要向RAM提供(地址)即2000,以便RAM定位待存取的(数据)50,然后等待若干个时间单位之后,RAM就会根据(地址)2000定位到(数据)50,并把(数据)50交给CPU。
前面我们已经提到,作为内存的RAM是以字节为最小单位的,你的数据如果1个字节放不下,可以给你2个字节或更多嘛,如此而已。类似存包处把每个格子称为存包单元,我们把每个字节称为内存中数据存取的单元,简称为
内存单元
。每个内存单元的地址编号,简称为
内存单元地址
。
哈!一切的一切就是如此的简单,你,对指针的理解,已经有了一个胜利的开始,衷心的祝贺你,我的朋友!
random
图片
c语言
cpu
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
c语言
深入解析GCD:任务队列与多线程编程
本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ...
[详细]
蜡笔小新 2024-12-22 10:11:08
c语言
PC时代的传奇人物
回顾过去几十年,个人电脑(PC)的发展历程犹如一部英雄史诗。每一位杰出人物都在这一领域留下了不可磨灭的印记,他们的贡献不仅推动了技术的进步,也深刻影响了现代社会的发展。 ...
[详细]
蜡笔小新 2024-12-19 17:05:46
java
Java中this关键字的使用及指针概念的理解
在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ...
[详细]
蜡笔小新 2024-12-24 13:20:44
c语言
C语言中的指针:概念、应用与注意事项
本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ...
[详细]
蜡笔小新 2024-12-24 10:51:59
ip
优化深度神经网络在低性能硬件上的运行
尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ...
[详细]
蜡笔小新 2024-12-24 08:48:32
list
深入解析Redis内存对象模型
本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ...
[详细]
蜡笔小新 2024-12-23 14:50:23
audio
雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ...
[详细]
蜡笔小新 2024-12-22 21:59:11
java
Python 内存管理机制详解
本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ...
[详细]
蜡笔小新 2024-12-22 19:27:56
c语言
VC++如何监控cpu fan 转速?
主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ...
[详细]
蜡笔小新 2024-12-22 13:48:42
c语言
如何延长手机电池续航?这些设置助你两天一充
智能手机的快速耗电问题困扰着许多人。通过一些简单的设置和调整,你可以显著提升手机的电池续航能力,甚至实现两天一充的目标。 ...
[详细]
蜡笔小新 2024-12-22 10:40:58
future
Java异步编程实践
本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ...
[详细]
蜡笔小新 2024-12-20 18:02:19
java
深入剖析JVM垃圾回收机制
本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ...
[详细]
蜡笔小新 2024-12-20 17:24:41
java
python冒泡排序理解_八大排序 python实现 精讲(一)冒泡排序
写在前面,排序算法属于面试中绝对不会错过的一道题,不管是原理,手撕,变形,优化,全都是考点。接 ...
[详细]
蜡笔小新 2024-12-19 10:02:13
c语言
解析SQL查询结果的排序问题及其解决方案
本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ...
[详细]
蜡笔小新 2024-12-23 21:21:17
java
Python面试题精粹
本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ...
[详细]
蜡笔小新 2024-12-19 20:26:25
Victoria625_176
这个家伙很懒,什么也没留下!
Tags | 热门标签
version
byte
metadata
shell
main
php5
netty
email
hashtable
ip
client
post
flutter
c语言
list
erlang
header
dagger
bitmap
typescript
java
timezone
testing
require
schema
future
substring
integer
buffer
audio
RankList | 热门文章
1
第十一章 Python基本数据类型及内置方法
2
Java与Android中使用BASE64进行加密解密的实现
3
龚自珍《己亥杂诗 78》解析与赏析
4
PHP 实现 99 乘法表的方法详解
5
船闸运作机制解析
6
探究jQuery与标准JavaScript Promise的区别及如何实现done()方法
7
解决Oracle TNS监听器服务无法启动问题
8
数据同步异步加载handler Looper
9
JSP中的Request请求对象详解
10
ZooKeeper集群构建与详解
11
B站仿站项目总结与反思
12
!= 运算符的重写候选条件解析
13
VMware Server免费版与付费版ESX Server的对比分析
14
Python中eval()函数的使用技巧与注意事项
15
C# 实现获取共享文件夹的用户权限列表方法
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有