首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
timestamp
select
request
default
import
go
settings
bit
web3
fetch
cpython
command
bitmap
md5
input
export
heatmap
metadata
usb
cmd
string
filter
erlang
c语言
iostream
function
keyword
join
text
bytecode
audio
python2
triggers
main
yaml
datetime
loops
python3
subset
config
rsa
split
httprequest
const
flutter
sum
php
hashtable
jsp
match
dagger
heap
perl
runtime
replace
foreach
list
integer
python
byte
typescript
controller
scala
uri
frameworks
hashcode
include
web
case
stream
hash
email
char
substring
数组
actionscrip
window
httpclient
search
当前位置:
开发笔记
>
编程语言
> 正文
第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语言
Java中this关键字的使用及指针概念的理解
在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ...
[详细]
蜡笔小新 2024-12-24 13:20:44
c语言
C语言中的指针:概念、应用与注意事项
本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ...
[详细]
蜡笔小新 2024-12-24 10:51:59
c语言
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语言
优化C/C++编程实践与内存错误解决方案
本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ...
[详细]
蜡笔小新 2024-12-24 20:13:38
c语言
C语言标准及其GCC编译器版本
编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ...
[详细]
蜡笔小新 2024-12-24 09:56:47
function
解析SQL查询结果的排序问题及其解决方案
本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ...
[详细]
蜡笔小新 2024-12-23 21:21:17
c语言
C语言基础入门:7个经典小程序助你快速掌握编程技巧
本文精选了7个经典的C语言小程序,旨在帮助初学者快速掌握编程基础。通过这些程序的实践,你将更深入地理解C语言的核心概念和语法结构。 ...
[详细]
蜡笔小新 2024-12-23 20:36:31
input
python3小游戏源代码_python 点球小游戏代码
#点球小游戏fromrandomimportchoiceimporttimescore[0,0]direction[left,center,right]defkick() ...
[详细]
蜡笔小新 2024-12-23 19:17:34
c语言
二维数组指针的自增操作解析
本文探讨了如何使用自增和自减运算符遍历二维数组中的元素。通过实例详细解释了指针与二维数组结合使用的正确方法,并解答了常见的错误用法。 ...
[详细]
蜡笔小新 2024-12-23 18:31:46
c语言
Python 学习是否需要先掌握 C 语言?
Python 是一门非常适合编程入门的语言,很多人疑惑是否需要先学习 C 语言才能更好地掌握 Python。本文将详细探讨这个问题,并为初学者提供专业的建议。 ...
[详细]
蜡笔小新 2024-12-23 18:22:45
c语言
C语言的起源与发展历程
本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ...
[详细]
蜡笔小新 2024-12-23 14:11:43
c语言
有C和C++基础,如何提高面向对象的类的设计能力?
编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ...
[详细]
蜡笔小新 2024-12-22 19:50:43
c语言
使用栈实现字符串中括号匹配的C++程序
本文介绍如何利用栈数据结构在C++中判断字符串中的括号是否匹配。通过顺序栈和链栈两种方式实现,并详细解释了算法的核心思想和具体实现步骤。 ...
[详细]
蜡笔小新 2024-12-22 11:44:35
Victoria625_176
这个家伙很懒,什么也没留下!
Tags | 热门标签
timestamp
select
request
default
import
go
settings
bit
web3
fetch
cpython
command
bitmap
md5
input
export
heatmap
metadata
usb
cmd
string
filter
erlang
c语言
iostream
function
keyword
join
text
bytecode
RankList | 热门文章
1
Spring Boot 中的静态资源管理
2
PHP定时任务实现详解与示例
3
如何免费激活DVD Audio Extractor
4
MySQL(03)——SQL语句操作数据表内容
5
go http服务的背后
6
深入解析Rsync的工作机制与部署实践
7
如何用GPU服务器运行Python
8
如何使用SQL Server查询变量的数据类型
9
dubbo5.添加dubbo
10
Cloudera CDH 5.1 版本中 Hive 与 LDAP 2.4.44 的集成指南
11
利用正则表达式处理HTML内容中的匹配与替换
12
Linux 中的任务调度与计划使用 Cron
13
解读华为‘山海经’:物联网关键技术的探索与突破
14
如何关闭vivo手机通话时播放音乐但对方听不到的功能?
15
如何在应用中添加Banner广告
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有