内存的本质是一种名为内存芯片的的装置,内存芯片分为RAM和ROM。其中RAM可读写,ROM为只读。而内存芯片有很多引脚,引脚负责连接电源控制输入与输出信号。其中有两个引脚分别叫做WR和RD,当WR的信号为1时,数据就会写入(输入)内存芯片;当RD的信号为1时数据就会从内存芯片中读出(输出)。
从物理上来看内存时以1字节为单位进行读写,而为了我们方便操作数据,一般编程语言会以数据类型为单位进行读写比如:C语言中的char,long数据类型等等,当使用时就char数据类型就以1字节进行操作,而long以4字节进行操作。
对于占用多个字节的数据,将数据的低位放在内存的低地址称为小端序方式;将数据的高位放在内存的低地址称为大端序方式。
指针是一种变量,它不存储数据本身的值,而是存储数据所在的内存地址。一般电脑的运行的程序是使用4字节来表示内存地址的,这是指针变量的长度是4字节,也就是说指针变量的长度是由内存地址大小来决定的,那么在32位的计算机中指针大小就是4字节,而在64位的计算机中指针大小就是8字节。在C语言程序使用时也需要先声明,但要在变量名前加一个*号。指针变量的存储大小都是4字节,而声明指针变量的数据类型代表着从指针存储的地址中一次读写多少字节的\数据。
数组有着栈、队列、链表,二叉查找数的变形结构。其中栈与队列的区别仅是数据的出入顺序不同,栈用的是LIFO(后进先出);队列用的是FIFO(先进先出)。它们也很好理解,栈原意是干草垛,存数据就像放草垛那样放下去,当使用时最后放下的数据反而会先使用;而队列顾名思义,先放入的数据也会先使用,队列通常以环形缓冲区的形式使用,数据从数组开头进行存放一直到末尾,下一个回到开头(此时开头的数据已被取出)继续,这样实现一种循环\使用的数据结构。
而链表就是在数组的基础再额外保存下一个数组元素的下标,它可以方便数据的添加和删除,删除就是更改下一个数组元素的下标,使其跳过被删除的数据,此时它虽然依旧存在内存中,但在使用时,它是被“删除的”。添加就是更改下一个数组元素的下标,使其导向新添加的数据,此时在使用时它就“添加上”了。当数据过多时这远比数组方便的多。
二叉查找树对链表进行了进一步扩展,让它除了保存自身外再保存两个下标,这样就可以实现根据数据的大小向两个方向分叉,从而高效,方便的进行查找数据。
数组时所有数据结构的基础。
标签:字节,数据类型,程序,内存,数组,指针,数据,第四章,怎样
From: https://www.cnblogs.com/lyf666/p/18021773