大话编程(三)

简介: 2013年1月15日 20:33:36 前边将了点线面中的数据结构,没有讲'体',这次就说说'体' 根据上边的几幅图,我举的例子都是以8个bit为单位: 1*8bit用作表示字符型;4*8bit用作表示整形 n个1*8bitn用作表示字符型数组;n个4*8bit用作表示整形数组 .

2013年1月15日 20:33:36

前边将了点线面中的数据结构,没有讲'体',这次就说说'体'

根据上边的几幅图,我举的例子都是以8个bit为单位:

1*8bit用作表示字符型;4*8bit用作表示整形

n个1*8bitn用作表示字符型数组;n个4*8bit用作表示整形数组

.......

那如果我想把整形数组,字符型数组放在一起呢,这个整体表示什么?--这就是体,c语言中这种不同长度的类型组成的一堆东西叫做结构体(struct)

至于对应与几何中怎样记忆,就自己想吧,贴图

把一堆不同长度的东西放到一起组成的数据类型叫结构体,

那么把同样的一堆东西再'复制'一份再放一堆,再放一堆,再放一堆,那么,这几堆东西合起来就叫做,结构体数组了

再复习一边:字符-字符数组,整数-整数数组,浮点数-浮点数数组,结构体-结构体数组.......

55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA

另外:为什么是8

先说一句教科书上的话:内存,是以字节编址的.

意思是说,内存是有地址的,每个字节有一个地址(嗯?还是有点儿不懂?)

之前说过,根据半导体的材料和电路的不同连线方式,

贵一点儿的弄几个,横七竖八的和一个只会计算2以内加法的东西堆在一起,盖上盖子就组成了cpu

便宜一点儿的排列整齐堆在一起,就组成了内存条

再便宜点儿的堆一大堆,放到一起就组成了硬盘

数据的流向是,硬盘->内存->cpu

cpu每次都要从内存中按读取数据,然后处理,如果不存在,就告诉硬盘让它把数据给内存,然后再从内存读数据

要保证cpu从内存中读取需要的数据,cpu就得知道需要的数据在内存的哪个地方,

这就需要给内存不同的地方写一个编号,根据编号来找cpu所需的数据,于是就规定,每8个bit给一个编号,这样就可以根据编号来找所需的数据了

而这8个bit就是一个字节,所以说:内存是以字节编址的

1.这个编号(内存地址)在编写程序时也可以获得

2.根据以上贴的几幅图,数组都是连续的(排列整齐的)放在一起的bit;结构体可以放不同长度(不同数据类型)的东西

由1,2可知:

我可以定义一个结构体,即存放本身的数据,又存放上一个结构体的内存地址,这样就多个结构体就可以不用连续的存放在内存中了,这就叫"链表"

同样如果结构体中及存放他前一个结构体的地址,又存放下一个结构体的地址,那么这种链表就叫双向链表

注:以上的'地址'指的是开始地址,因为一个数据类型不可能只占用8bit,如果占用了超过8bit就拥有了多个内存地址,一般只用保存最开始的那个个地址就行了

 

目录
相关文章
|
6月前
|
数据可视化 数据库
|
5月前
|
算法 C++
2023_7_21编程题
2023_7_21编程题
39 0
|
9月前
编程求1+2+3+…+1000的结果。
编程求1+2+3+…+1000的结果。
|
9月前
|
设计模式 算法 安全
给大家推荐10本最优秀的编程书
给大家推荐10本最优秀的编程书
335 0
|
11月前
7-188 编程团体赛
7-188 编程团体赛
180 0
|
JavaScript 前端开发 Java
为什么学编程
知识在于点滴积累
726 0
|
索引
2017年360最后一道编程题
A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,但各自的实力都不足以吞下对方,经过谈判后,双方同意用一个公平的方式来处理这片金矿。
1089 0
|
安全 数据安全/隐私保护