• 内存管理之结构体


    1、数据结构这门学问的意义
     数据结构就是研究数据如何组织(在内存中排布),如何加工的学问
    2、最简单的数据结构:数组
     为什么要有数组?
     因为程序中有好多个类型相同、意义相关的变量需要管理,这时候如果用单独的变量来做程序的话,
     就会比较混乱,所以用数组来管理会更好。
     譬如: int  ages[20];
    3、数组的优势和缺陷
     优势:数组比较简单,访问可以用下标,并且可以随机访问。
     缺陷:1.数组中的所有元素必须相同 2.数组的大小必须定义的时候给出,而且一旦确定不能更改。
    4、结构体
     结构体的出现就是为了解决数组的第一个缺陷:数组中的所有元素必须相同。
     譬如我们要管理三个学生的年龄:
     第一种用数组:     int  ages[3];
     第二种用结构体:  
     struct  ages
     {
      int age1;
      int age2;
      int age3;
     }
     struct ages age;
     这个时候就是用数组表示比较好;但是如果数据包中的元素类型不一样,这时就需要用结构体而不能用数组了。
     struct people
     {
      int age;          //人的年龄
      int height;       //人的身高
      char name[20];        //人的名字
     }
     这个时候数据包中有多个类型的元素,用数组就不能表示了,就要用结构体。
    5、结构体内嵌指针实现面向对象
    面向过程和面向对象。
    总的来说:C语言是面向过程的,但是C语言写出来的Linux系统是面向对象的。
    非面向对象的语言,也能实现面向对象的代码。只能说如果用面向对象的语言来实现面向对象对更加简单、清晰、直观。
    用C++、Java等面向对象的语言来实现面向对象会简单一些,因为语言本身帮助我们做了很多事情;但是
    用C来实现面向对象很麻烦,而且不容易理解,这也就是为什么大多数学过C语言却看不懂Linux内核代码的原因。
    struct s
    {
     int age;               //普通变量
     void  (*pFunc)(void);        //函数指针,指向void func(void)这类的函数 
    }
    使用这样的结构体就可以实现面向对象。
    这样包含了函数指针的结构体就类似于面向对象中的class,结构体中的变量类似于class中的成员变量,结构体中的函数指针
    类似于class中的成员函数(成员方法)。

  • 相关阅读:
    如何划分与组织内存(上)?
    CountDownLatch和CyclicBarrier:如何让多线程步调一致?
    怎样用读写锁快速实现一个缓存?
    并发容器的前世今生是怎样的?
    java的原子类到底是啥?ABA,CAS又是些什么?
    设置工作模式与环境(中):建造二级引导器
    希尔排序
    order by是怎样工作的?
    如何用信号量去实现一个限流器?
    读多写少的场景下,竟然还有比读写锁更牛X的锁?
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11350361.html
Copyright © 2020-2023  润新知