zoukankan      html  css  js  c++  java
  • 大话编程(三)

    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就拥有了多个内存地址,一般只用保存最开始的那个个地址就行了

  • 相关阅读:
    Day15模块(导入,使用)
    day14 迭代器,生成器,函数的递归调用
    Day13有参装饰器,三元表达式,匿名函数
    re模块
    Day12装饰器
    subprocess模块windows系统命令和linux系统命令
    Day11名称空间,作用域,闭包函数
    识别 Linux上的设备(磁盘)类型
    Linux lsblk和df命令区别
    Linux远程拷贝scp
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/2861897.html
Copyright © 2011-2022 走看看