首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
php7
vbscript
java
shell
bit
solr
cmd
blob
netty
bytecode
window
testing
lua
tags
runtime
web
match
filter
foreach
client
io
hashset
utf-8
hashcode
jar
node.js
heap
expression
select
cookie
input
go
post
erlang
config
main
python3
include
iostream
function
timestamp
数组
byte
random
hook
vba
golang
fetch
javascript
yaml
less
format
int
export
loops
join
split
case
flutter
python
range
import
tree
text
command
bitmap
ascii
nodejs
uri
ip
hashtable
frameworks
python2
future
httpclient
search
merge
version
rsa
当前位置:
开发笔记
>
编程语言
> 正文
第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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
io
Spring Boot + RabbitMQ 消息确认机制详解
本文详细介绍如何在 Spring Boot 项目中使用 RabbitMQ 的消息确认机制,包括消息发送确认和消息接收确认,帮助开发者解决在实际操作中可能遇到的问题。 ...
[详细]
蜡笔小新 2024-11-16 20:54:38
io
H5技术实现经典游戏《贪吃蛇》
本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ...
[详细]
蜡笔小新 2024-11-21 20:16:59
heap
深入解析WebP图片格式及其应用
随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ...
[详细]
蜡笔小新 2024-11-20 16:31:47
java
汇编语言:编程世界的始祖,连C语言都敬畏三分!
当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ...
[详细]
蜡笔小新 2024-11-20 13:33:02
io
UE4 中的距离场技术详解
本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-11-19 18:21:03
io
Redis:缓存与内存数据库详解
本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ...
[详细]
蜡笔小新 2024-11-18 14:16:11
io
存储器概览
本文介绍了存储器的基本原理及其分类,包括不同类型的存储介质和存储方式,并详细解释了各种存储器的特点和应用场景。 ...
[详细]
蜡笔小新 2024-11-18 10:56:42
io
PCIe中的弹性缓冲原理解析
PCIe是一种高速串行总线,其传输信号为差分信号,并采用同步传输方式。然而,PCIe并没有专用的同步时钟。本文将详细介绍PCIe中的弹性缓冲(Elastic Buffer)原理,探讨其如何处理时钟差异,确保数据传输的稳定性和可靠性。 ...
[详细]
蜡笔小新 2024-11-17 21:08:36
io
对象存储与块存储、文件存储等对比
看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ...
[详细]
蜡笔小新 2024-11-17 18:21:23
io
大华股份2013届校园招聘软件算法类试题D卷
一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ...
[详细]
蜡笔小新 2024-11-17 11:01:27
io
C语言中的指针详解
1.什么是指针C语言中指针是一种数据类型,指针是存放数据的内存单元地址。计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节, ...
[详细]
蜡笔小新 2024-11-18 15:25:36
io
电商高并发解决方案详解
本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ...
[详细]
蜡笔小新 2024-11-18 14:59:39
io
单片机编程中的常用C库函数详解
本文详细介绍了在单片机编程中常用的几个C库函数,包括printf、memset、memcpy、strcpy和atoi,并提供了具体的使用示例和注意事项。 ...
[详细]
蜡笔小新 2024-11-18 11:41:46
io
C语言中的结构体详解
本文详细介绍了C语言中的结构体,包括结构体的声明、初始化、成员访问以及传参等方面的知识。 ...
[详细]
蜡笔小新 2024-11-17 19:31:06
io
C语言中的字符串与常用字符串函数
本文详细介绍了C语言中的字符数组和字符串的基本概念,以及常用的字符串处理函数,帮助读者更好地理解和使用这些功能。 ...
[详细]
蜡笔小新 2024-11-17 08:39:41
Victoria625_176
这个家伙很懒,什么也没留下!
Tags | 热门标签
php7
vbscript
java
shell
bit
solr
cmd
blob
netty
bytecode
window
testing
lua
tags
runtime
web
match
filter
foreach
client
io
hashset
utf-8
hashcode
jar
node.js
heap
expression
select
cookie
RankList | 热门文章
1
16年4月计算机应用基础,2017年4月自考计算机应用基础精选习题及答案(16)
2
系统设计有没有什么快速入门的办法啊………
3
NPS如何配置基于mac地址的8021x认证
4
如何在fastapi启动的多个app之间共享全局变量?
5
pyQt5中文教程
6
Linux 常用打包解压命令总结
7
ASP.NET初学者提问 VS2013中打开本地创建的网站LWL,运行程序的时候出现了问题,找了好多办法都没用求教,在线等
8
一个字头的变更——硬盘巨头启示录之日立IBM篇
9
拉取用户信息现在报 48001: api功能未授权
10
sql server怎么设置两个主键?
11
会计初级可以自己报名吗_初级会计师可以自己报名吗?
12
ajax 请求的时候的loadding动画的问题,如果并发请求多个,该如何优化loadding?
13
CVE202121985: VMware vCenter Server远程代码执行漏洞通告
14
华为MatePad Pro 2包装盒曝光:Powered by HarmonyOS
15
xenomai for at91
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有