C与数据结构——概述(一)

来源:互联网 发布:python车道线识别 编辑:程序博客网 时间:2024/05/22 01:45

    引言:  未进职场,真正接触产品开发之前,基础还是才是最重要的。大学的好处就是随心所欲的学。怎么理解就怎么理解,不违规,不犯法。呵呵,从今天开始的一段时间,我开始将c语言和数据结构的理解写写,算大学的最后珍惜了。一千个读者就有一千个哈姆雷特。错与对无关紧要。也许今日肤浅,自己他日有新想法会回来修改完善。

 

    编程语言这东西,其实我就是喜欢看成数据区,一块块的,进行相关操作。

早晨起床,大家都去上课。我赖床,随手拿起床头的数据结构和算法分析来看。以前的老师,我一点都不喜欢,上课照本宣科,没给我们模型过,还双语教学。也就是课本是英语,老师一句英语都不讲。当时学单片机,没怎么用心学,考试60分,循环链表竟然考大题,没看,失策。很久没摸这本书,躺在床上将列表看完,才起床。
    马克思主义告诉我们,事物之间是是相互联系的。好吧,我用内存空间结构和C语言来理解这些东西,还有编译器。
    掌握语言,至少要理解内存空间结构和编译器怎么工作,才算了解。自己的C不敢说和很好,只能说基础还行,现在简历上说精通的太多了。现在总结一下自己看数据结构,看C语言代码的一些理解。掌握东西,别人的一大堆概念,有时候对自己是水过鸭背一样,所以用自己的想法来理解才是王道。

  数值,地值,数据区,基地址+偏移地址,数据类型和数据结构,数据的定义、初始化,引用。
  1、数值,地值--这两个只是我的概念而已。一般C的书上都写数据,地址,指针,数组名什么的咚咚,这是人家喜欢的叫法,而我,想想cpu处理东西是指令和数据,计算机里什么都是二进制,0和1,都是数据,代码一编译,就都是目标代码了。存到物理内存中,不就都是数据了吗,但是,这些东西,要区分,有些是需要处理的真正数据(数值),有些则是数据的门牌(地值),比如刚才说的变量名等。
  2、数据区--存储的根据数据类型,都是一块一块的,也就是连续存储,可以是大单元,可以是小单元。而刚好,指令存储和改写数据都需要按块找到位置(数据块的基地址),要么处理整块大单元,或者其中的小单元,或者单个数据类型,比如表是大单元,节点是大单元中的小单元,何有各个域是对应的数据类型,数值和地值。
  3、基地址+偏移地值——这个就是找数据块的方法。存储空间是物理内存大小,一般说多少KB,MB,GB等,而这些空间是映射到对应的地址空间的,也就是编个号,让CPU认识,比如从0—10,大小是11,编址是从0~10,(计算机里基本上都是从0编号)。内存的物理连接就是挂到系统总线上,用译码器译指令,这样CPU就可以找到数据进行数据处理了。基地址+偏移地址就是一个空间连续存储的数据块。基地址就是大单元地址,小单元就是小单元重新编号,挨家挨户就可以找到了。比如X8086里边,数据块段地址是0x2000,偏移地址是0x03,那么基地址+偏移地址,就可以找到0x20003的单元数值了。注意,X8086段地址存储器是16位的,地址线是20根,所以会有地址值处理。结构体中,P->next,是可以这样解释的,比如数据结构表中,P指针指向节点node,那么P对应的地值是node这个连续存储的结构,而P->next则是P基地址+next偏移地址,就找到了next这个域,数据是地值,放到地址寄存器进行处理。
    4、数据类型——没什么好说的,就是基本的数据单元形式,内存占多少字节。其他不是说很多。
    5、数据结构——就是一种基本的数据单元以上的组成形式。内存空间分布。
    6、数据定义、初始化、引用——前面我说过,计算机处理的都是数据,那么代码中见到定义,就是给地值,初始化是给数据区填内容,可以是数值和地值。引用则是使用数据,取到寄存器去处理。比如说,谭老的书:一维数组的定义方式为 类型说明符 数组名[常量表达式]。然后下面就是形式明,其实,然后这样不行,那样不行,好像没说到实质,以前我就认为,管他呢,都是编译器干的活。
    比如变量定义,数组定义,指针定义,结构体定义,共用体定义,函数定义,等等,在我看来,都是给地值,要不是大单元,要么是小单元。初始化——就是给地值对应的数据区填内容,变量是数值,指针。结构体数据块。引用——数据地值和数值这两个元素有了,那就可以处理数据了,这是算法中取出来,在寄存器操作。改写后存进去或者释放掉。
    先下解释说明这些,这个是我阅读代码构造模型的核心咚咚。或许自己语文不太好吧,对一般教程上的东西,总是感觉名词概念太多,太复杂,还是自己理解,简单化。毕竟知识是自己脑子里的东西。
    今天就写这些,下次分析一些代码,比如表,栈,队列,树,和一些排序算法。都很基础。

原创粉丝点击