zoukankan      html  css  js  c++  java
  • 内存管理之结构体

    内存管理之结构体

    数据结构这门学问的意义

          数据结构就是研究数据如何组织(在内存中排布),如何加工的学间。...4.1.6.2、最简单的数据结构:数组

          为什么要有数组?因为程序中有好多个类型相同、意义相关的变量需要管理n这时候如果用单独的变量来做程序看起来比较乱,用数组来管理会更好管理。譬如int ages[20];

    数组的优势和缺陷

          优势:数组比较简单,访问用下标,可以随机访问。

          缺陷: 1数组中所有元素类型必须相同; 2数组大小必须定义时给出,而且一旦确定不能再改。
     

    结构体隆重登场

    结构体发明出来就是为了解决数组的第1个缺陷,数组中所有元素类型必须相同

    我们要管理3个学生的年龄(int类型),怎么办?

    第一种解法,用数组 int  ages[3];

    第二种解法,用结构体

    struct ages

    {

      int agel;

      int age2;

      int age3;

    };

    struct ages age; 

    分析总结:在这个示例中,数组要比结构体好。但是不能得出结论说数组就比结构体好,在包中元素类型不同时就只能用结构体而不能用数组了

    struct people

    {

      int age; //人的年龄

      char name [20] ; //人的姓名

      height; //人的身高

    };

    因为people的各个元素类型不完全相同,所以必须用结构体,没法用数组。

    结构体内嵌指针实现面向对象面向过程与面向对象

    总的来说:c语言是面向过程的,但是c语言写出的linux系统是面向对象的。

    非面向对象的语言,不一定不能实现面向对象的代码。只是说用面向对象的语言来实现面向对象要更加简单一些直观一些、无脑一些。

    用C++、Java等 面向对象的语言来实现面向对象简单一些,因为语言本身帮我们做了很多事情,但是用c来实现面向对象很麻烦,看起来也不容易理解,这就是为什么大多数人学过c语言却看不懂linux内核代码的原因。

    struct 3

    {

      int age; //普通变量

      void (*pFunc) (void); //函数指针,指向void func (void)这类的函数

    }

    使用这样的结构体就可以实现面向对象。

    这样包含了函数指针的结构体就类似于面向对象中的class,结构体中的变量类似于class中的成员变量,结构体中的函数指针类似于class中的成员方法。

  • 相关阅读:
    NuGet打包推送批处理以及MSBuild(通用版)
    Linux su和sudo命令的区别,并获得root权限
    linux下命令运行目录上程序前面要加./
    java的系统时间,怎么计算从现在到凌晨还剩下多少时间?
    静态资源压缩(GZIP) 专题
    架构选型之Nodejs与Java
    基于 WebRTC 创建一款多人联机游戏
    django从0到1搭建网站
    Android 关于ExpandableListView去掉里头的分割线
    Android 关于ExpandableListView刷新的解决办法
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/10264539.html
Copyright © 2011-2022 走看看