熟练使用内存(1)

1.本文要点
计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据机构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。因此,大家有必要对内存和磁盘的构造有一个物理上(硬件的)和逻辑上的(软件的)认识。

由于作者也是新手,正在学习程序是怎么跑起来的这本书,为了方便记忆和后续的学习,对书中重要的片段进行了截取,纯手打,本文仅作为个人学习专用。

(1)内存的物理机制其实很简单

1 . -我们首先看一下内存的物理机制。内存实际上是一种名为IC的电子元件,内存IC中有电源,地址信号,数据信号,控制信号等用于输入输出的大量引脚(IC的引脚),通过为其地址(address),来进行数据的读写

  • 这里补充一下**IC**的形式及其解释:
    
  • 1 .ROM(Read Only Memory)是一种只能用来读取的内存  
    
  • 2 .RAM(Random Access Memory)是可被读取和写入的内存
    

2 .在计算机领域,大写的字母K表示的并不是1000,而是2的10次幂的结果 1024,1000通常都用小写k来表示
3.内存IC的物理机制的本质:内存IC内部有大量可以存储8位数据的地方,通过地址指定这些场所,之后即可进行数据的读写

(2)内存的逻辑模型是楼房
1 .虽然内存的实体是内存IC,不过从程序员的监督来看,也可以把它假想成每层都存储着数据的楼房吗,并不需要过多的关注内存IC的电源和控制信号等。
2 .在程序员眼里的内存模型中,还包含着物理内存中不存在的概念,那就是数据类型。编程语言中的数据类型表示存储的是何种类型的数据。从内存来看,就是占用的内存大小的意思。即使是物理上以1个字节为单位来逐一读写数据的内存,在程序中,通过指定其类型(变量的数据了类型等),也能实现以特定字节数为为单位来进行读写。
3.下面我们来看一个具体的示例 这是一个往a,b,c这三个变量中填写数据123的C语言程序,这3个变量表示的是内存的特定区域。通过使用变量,即使不指定物理地址,也可以在程序中对内存进行读写,这是因为,在程序运行时,Windows等操作系统会自动决定变量的物理地址

//定义变量
char a;
long b;
short c;
//给变量赋值
a=123;
b=123;
c=123;

-这3个变量的数据类型分别是,表示一字节长度的char,表示2字节长度的short,以及表示4字节长度的long,因此,虽然是同样的数据123,存储时所占用的内存大小是不一样的。
不同类型的指针所能读写的长度是不一样的 d是char类型的(char *d),以此类推,e是short类型的,f是long类型的不同类型的指针所能读写的长度是不一样的 d是char类型的(char *d),以此类推,e是short类型的,f是long类型的

在C语言中,int这一数据类型经常会用到,int也是CPU最容易处理的数据类型的长度,在32位得CPU中,int是32位的。在以前的16位的CPU中,int是16位的

(3)简单的指针
指针也是一种变量,它表示的不是数据的值,而是存储着数据的内存的地址。
(4)数组是高效使用内存的基础
1 . 数组是指多个同样数据类型的数据在内存中连续排列的形式。作为数组元素的各个数据会通过连续的编号被区分开来,这个编号称作索引(index)。指定索引后,就可以对该索引所对应地址的内存进行读写操作。
2 . CPU是通过利用基址寄存器和变址寄存器来指定内存地址的
3.使用数组能够使变成工作变得更加高效。如果在反复循环处理中使用数组,很短的代码就能达到按顺序读写数组元素的目的。

此文就先写到这里,下篇文章我将会简单的介绍一下栈,队列,代码清单和二叉查找树这些数组的变形方法,对于一名优秀的程序员来说,不仅要了解,还要会灵活使用这些方法,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_41956142/article/details/82870114
今日推荐